私のfindOneAndUpdate操作で文書が見つかったかどうかを調べようとしています。そうでない場合、404エラーが見つかりません。私は、Mongooseが提供する "passRawValue"オプションを使用して、未処理の値があるかどうかを調べることにしました。rawが未定義の場合、ドキュメントが見つかりませんでした。Mongoose findOneAndUpdateが生のMongoレスポンスを返さない
ただし、ドキュメントが見つかったかどうかにかかわらず、生の値は未定義です。私は更新しようとしているドキュメントが、更新の直前に単純な "findOne"クエリを実行することによって、クエリの時点でDBにあることを確認しました。どこが間違っていますか?
let updateItemById = (userId, itemId, params, cb) => {
//this finds and prints the document I'm testing with -- I know its in the DB
// Item.findOne({ "_id" : itemId, ownerId: userId }, (err, doc) => {
// if (doc) {
// console.log("This is the doc: ", doc);
// }
// });
Item.findOneAndUpdate({ "_id" : itemId, ownerId: userId },
{
$set: {
params
}
}, { runValidators: 1, passRawResult: true}, (err, doc, raw) => {
if (err) {
//winston.log
return cb(ErrorTypes.serverError(), false);
}
else if (raw) {
return cb(null, true);
}
else {
return cb(ErrorTypes.notFound(), false);
}
});
}
ああ、もしそうなら、どのようなアプローチになるだろうか? My Itemオブジェクトには、更新で設定できるオプションのプロパティがあります。これは私の使用例です。 –
したがって、オプションのプロパティはスキーマに定義されていませんか? –
こんにちは、更新されたセクションを確認してください。 –