[英]Node+MongoDB: coll.find().toArray(cb) works for collection A, but never fires cb for collection B?
[英]Node+MongoDB: find in collection
我只是不知道为什么它不起作用((val.instruments是未定义的。
function getInstruments(callback) {
db.collection("settings", function(error, settings) {
settings.find({ "settings" : "settings" }, function (err, val) {
console.log('from getInstruments ' + val.instruments);
if (val.instruments==undefined) {
callback("");
} else {
callback(val.instruments);
}
});
});
}
方案:
{
"_id": {
"$oid": "508677a3e5089a6df291631a"
},
"settings": "settings",
"instruments": [
"1",
"2",
"3"
]
}
返回:
node app.js:
from getInstruments undefined
有什么建议么? 谢谢。
UPD :将代码修改为:
function getInstruments(callback) {
db.collection("settings", function(error, settings) {
settings.find({ "settings" : "settings" }).toArray(function(err, docs) {
console.dir(docs.instruments);
});
});
}
结果:
[ { _id: 508677a3e5089a6df291631a,
settings: 'settings',
instruments: [ '1', '2', '3' ] } ]
变成:
function getInstruments(callback) {
db.collection("settings", function(error, settings) {
settings.find({ "settings" : "settings" }).toArray(function(err, docs) {
console.dir(docs.instruments);
});
});
}
结果:
undefined
怎么可能
find返回一个数组。 因此,您应该检查val.length大于0,然后查看val [0] .instruments
看一下文档的find部分末尾的示例。 如果你运行val.toArray()
回调之内find
,你应该能够遍历返回的文档,并通过一个处理它们之一。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.