Node + MongoDB:在集合中查找

时间:2012-10-25 20:32:31

标签: node.js mongodb find

我只是不知道它为什么不起作用((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

它怎么样?

2 个答案:

答案 0 :(得分:0)

find返回一个数组。所以你应该检查val.length是否大于0,然后查看val [0] .instruments

答案 1 :(得分:0)

查看文档find section最后的示例。如果您在val.toArray()的回调中运行find,您应该能够遍历返回的文档并逐个处理它们。