无法从猫鼬对象

时间:2015-09-05 11:40:22

标签: node.js mongodb mongoose

我和猫鼬有一种奇怪的行为。当我console.log结果对象时,我看到该属性在这里,但当我尝试获得所需的值console.log(obj.propt)时,它返回undefined。

ServerModel.findOne(function (err, server) {
    if (err) {
        return console.error(err);
    }

    console.log(server);
    // output:
    // {_id: 55ead0eb4105b7df958256af,
    // name: 'st1',
    // ip: '57.29.42.241',
    // capacity: 0,
    // totalUsed: 0,
    // state: true }

    console.log(server.ip);
    // output: undefined

    console.log(server.name);
    // output: st1

    // but that works if I use the toObject method
    var srvr = server.toObject();

    var serverAddress = srvr.ip;
    // serverAddress is 57.29.42.241
});

奇怪的是,如果我使用.toObject方法,它就有效。我一定错过了什么。有没有人对此有解释?

1 个答案:

答案 0 :(得分:2)

当MongoDB文档中存在字段但未在Mongoose模式中定义时,会发生这种情况。

因此,请务必在ServerModel架构中将其定义为

ip: String

或者,要访问它,即使它未在您的架构中定义,请使用get方法:

console.log(server.get('ip'));