私はmongobのデータベースクエリをmongoシェルに入れずにconsole.log()したいと思います。以下は私のコードです。関連する部分は太字で示しています。mongodbデータベースのクエリをmongoシェルではなくコンソールに記録する方法を教えてください。
router.put('/quotes/:id', (req, res, next) => {
let personToUpdate = req.params.id;
**console.log("old name: " + JSON.stringify(db.collection("quotes").findOne({ _id: ObjectId(personToUpdate) })));**
db.collection("quotes").findOneAndUpdate(
{ _id: ObjectId(personToUpdate)},
{$set: {
name: req.body.name
}
}, function (err, object) {
if (err) {
console.warn(err.message);
} else {
**console.log("new name: " + req.body.name);**
}
}
);
});
私が試みた:
console.dir()が、戻り[オブジェクト、オブジェクト]ことを。 私はprint()とprintjson()を試しましたが、それらはmongo shell exclusiveコマンドです。
最終的な結果は、put要求によってユーザーが名前を変更したときに、まずデータベースに格納されている古い名前をコンソールに記録し、次にfindOneAndUpdate()mongodbコマンドの最後で変更することです名前を入力すると、ユーザーがreq.body.nameを通じて送信した新しい名前がログに記録されます。
なぜ非同期呼び出しの結果を記録していますか? – lilezek
なぜそれが問題なのか分かりません。ロギング( "新しい名前:" + req.body.name)はうまくいきます。私の難しさは、変更が行われる前に、データベースに現在保存されているログに古い名前を取得することです。 –
'findOne'の動作をお読みください:http://mongodb.github.io/node-mongodb-native/2.2/api/Collection.html#findOne –