2015-09-05 48 views
0

我與貓鼬有一個奇怪的行爲。當我的結果對象爲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

哦,我」我太蠢了......至少我希望這可能對像我這樣的其他心不在焉的人有幫助!謝謝。 – Buzut

回答

2

當MongoDB文檔中有一個字段存在但沒有在Mongoose模式中定義時,會發生這種情況。

所以一定要在你的ServerModel模式來定義它作爲

ip: String 

或者,要訪問它,即使它不是在你的架構中定義,使用get方法:

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