繁体   English   中英

Node + MongoDB:在集合中查找

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM