【问题标题】:Impossible to get property from mongoose object无法从 mongoose 对象中获取属性
【发布时间】:2015-09-05 22:14:20
【问题描述】:

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

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 方法,它就可以工作。我肯定错过了什么。有人对此有解释吗?

【问题讨论】:

  • 哦,我太笨了……至少我希望它可能对像我这样心不在焉的其他人有所帮助!谢谢。

标签: node.js mongodb mongoose


【解决方案1】:

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

所以请务必在您的 ServerModel 架构中将其定义为

ip: String

或者,要访问它,即使它没有在您的架构中定义,也可以使用get 方法:

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

【讨论】:

    猜你喜欢
    • 2016-07-22
    • 1970-01-01
    • 1970-01-01
    • 2012-07-26
    • 1970-01-01
    • 2016-11-08
    • 2016-06-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多