我和猫鼬有一种奇怪的行为。当我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
方法,它就有效。我一定错过了什么。有没有人对此有解释?
答案 0 :(得分:2)
当MongoDB文档中存在字段但未在Mongoose模式中定义时,会发生这种情况。
因此,请务必在ServerModel
架构中将其定义为
ip: String
或者,要访问它,即使它未在您的架构中定义,请使用get
方法:
console.log(server.get('ip'));