Ich möchte console.log() die Ergebnisse einer mongodb-Datenbank-Abfrage ohne in die Mongo-Shell zu gehen. Unten ist mein Code. Die relevanten Teile sind fett gedruckt.Wie logge ich eine mongodb-Datenbankabfrage an die Konsole (nicht die Mongo-Shell)?
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);**
}
}
);
});
Ich habe versucht:
console.dir(), aber das kehrt [object, object]. Ich habe versucht print() und printjson(), aber das sind Mongo Shell exklusive Befehle.
Das Endergebnis sollte sein, dass, wenn der Benutzer einen Namen durch eine Put-Anfrage ändert, zuerst der alte Name, der in der Datenbank gespeichert ist, an die Konsole und dann am Ende des findOneAndUpdate() mongodb -Befehls geändert wird Der Name protokolliert den neuen Namen, den der Benutzer über req.body.name
Warum protokollieren Sie das Ergebnis eines asynchronen Anrufs? – lilezek
Ich verstehe nicht, warum das ein Problem ist. Logging ("neuer Name:" + req.body.name) funktioniert gut. Meine Schwierigkeit besteht darin, den alten Namen zu protokollieren, der gerade in der Datenbank gespeichert ist, bevor die Änderungen vorgenommen werden. –
Bitte lesen Sie, wie 'findOne' funktioniert: http://mongodb.github.io/node-mongodb-native/2.2/api/Collection.html#findOne –