2015-09-05 6 views
0

У меня странное поведение с мангустом. Когда я 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. Я, должно быть, что-то пропустил. У кого-нибудь есть объяснение?

+0

О I» m so dumb ... По крайней мере, я надеюсь, что это может быть полезно для некоторых других рассеянных, подобных мне! Спасибо. – Buzut

ответ

2

Это произойдет, когда поле находится в документе MongoDB, но не определено в вашей схеме Mongoose.

Так что будьте уверены, чтобы определить его в ServerModel схеме, как

ip: String 

Или, для доступа к нему, даже если он не определен в схеме, используйте get метод:

console.log(server.get('ip')); 
Смежные вопросы