[英]Why the object returns undefined when output property?
在使用 Node js 的服務器端,我使用 Mongoose 通過 ID 查詢文檔。 我從 mongodb 中查詢了一個文檔,以使用該文檔的 ID 向其中添加一些數據。 但是當我想使用該文檔的 de ID 時,它是未定義的。 這是代碼:
user.find({user: req.body.user}, function(err, doc) {
if(err) {
console.log(err);
} else {
console.log(doc + ' the document'); // Here returns the object with all properties
console.log(typeof doc + ' type of variable'); // Outputs Object
console.log(doc._id + ' the ID'); // Undefined
console.log(doc.user+ ' the user'); //Also undefined
user.findById(doc._id, function(err, user){
if(err) {
console.log(err);
} else {
console.log(user + ' <---');
// for (const iterator of req.body.list) {
// console.log(iterator);
// user.cases = iterator;
// user.save().then(person => {
// console.log('Added')
// })
// .catch(err => {
// console.log('Failed')
// });
// }
}
})
// console.log(doc + ' <--- Document');
}
});
})
Mongoose 的Model.find()
總是在集合內提供文檔,即使只有 1 個也是如此。此方法是調用Query.find()
的簡寫,它更直接地說明了這一點:
結果將是一個文檔數組。
有了它,您必須在訪問_id
之前從集合中訪問所需的文檔。
user.find({user: req.body.user}, function(err, docs /* note: plural */) {
if(err) {
console.log(err);
} else if (docs.length === 0) {
console.log('Not found');
} else {
console.log(docs[0]._id, 'the user');
let userDoc = docs[0];
console.log(userDoc._id, 'the user');
// ...
}
});
您可以交替使用Model.findOne()
只取回與查詢匹配的第一個/單個文檔:
user.findOne({user: req.body.user}, function(err, userDoc) {
if(err) {
console.log(err);
} else if (userDoc == null) {
console.log('Not found');
} else {
console.log(userDoc._id, 'the user');
// ...
}
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.