当我循环它时,mongoose查找结果不能用作对象

时间:2013-12-05 07:21:07

标签: node.js mongodb mongoose

我的收藏(消息)有一个字段(PROGRAM),当我尝试打印它时使用obj [i] .PROGRAM,它返回undefined。

var messages = db.model('messages', mongoose.Schema({}), 'messages');
messages.find({}).limit(10).exec(function(err, obj) {
    console.log(obj);
    for(var i=0; i<obj.length; i++) {
        console.log(obj[i].PROGRAM);    //why here return undefine ? 
    }
});

结果:

[ { PROGRAM: 'sudo' } ]
undefined

2 个答案:

答案 0 :(得分:0)

您想要返回一个对象吗?如果是这样,以下代码应符合您的要求:

messages.findOne({"Programm" : "sudo}, function(error, obj) {
    // ...
});


但是,如果要查询消息集合中的所有对象,可以使用:

messages.find({}, function(error, obj) {
    // ...
    obj.forEach(function(o) {
        console.log(o.property);
    });
});

答案 1 :(得分:0)

使用Mongoose时,您需要定义Schema,然后创建模型。如果您要使用现有集合,则需要使用Schema定义对结构建模。例如,如果您在名为PROGRAM的文档中有一个字段,且字段为String

var Message = mongoose.model('messages', mongoose.Schema({
        PROGRAM : String
    }), 'messages');

您稍后可以参考它:

var msg = new Message();
msg.PROGRAM = 'npm';
if (msg.PROGRAM === 'node') {
   // etc... do whatever you'd want. 
}