2015-03-31 3 views
0

У меня есть коллекция оповещения в моем MongoDB .. Я хотел бы получить атрибуты объекта, присутствующий в моей модели предупреждений, я написал следующий код ....получить атрибуты объекта получили из MongoDB

Alert.find({},function(err,alerts){ 
    if(err) 
     console.log(err); 
    console.log(alerts); 
    alerts.forEach(function(result){ 
     console.log(result.name); 
     console.log(result._id); 
    }); 
}); 

в первой консоли, я получаю все объекты модели оповещения, но во второй консоли она «Неопределенный» даже result.name присутствует в модели ..

но _id порождается MongoDB сам и им удалось получить этот идентификатор.

From 1st console: 
    { __v: 0, 
    _id: 55128d3a1b35c366eb974285, 
    brand: 'SanDisk', 
    name: 'SanDisk Cruzer Blade 8 GB Pen Drives Black (Combo of 2)', 
    source: 
    { name: 'Snapdeal', 
     productId: '141951', 
     inStock: true} 
} 
From 2nd console: 
    Undefined 

From 3rd console 
    55128d3a1b35c366eb974285 

Может не в состоянии получить эту проблему, что правильный способ сделать это .. Заранее спасибо

ответ

0

Я использовал мангуст .. и раствор для вышеперечисленного применения Lean функции()

т.е.
Alert.find({}).lean().exec(function(err,alerts){ 
    if(err) 
     console.log(err); 
    console.log(alerts); 
    alerts.forEach(function(result){ 
     console.log(result.name); 
     console.log(result._id); 
    }); 
}); 
+1

Вашего первоначальный вопрос никогда не упоминал вы использовали драйвер мангуста Node.js. – chridam

0

Там нет никаких проблем здесь, но вы должны понимать, что MongoDB find() метод возвращает cursor к документам которые соответствуют критериям запроса. Итак, то, что вы видите в console.log(alerts), на самом деле возвращает курсор. Когда метод find() «возвращает документы», метод фактически возвращает курсор к документам. Итак, вы видите на первом и третьем консольных выходах объекты и свойства курсора.

Вам необходимо добавить метод toArray() к полученному курсору из операции Alert.find(), например.

Alert.find({}).toArray(function(err, alerts){ 
    if(err) 
     console.log(err); 
    console.log(alerts); 
    alerts.forEach(function (result) { 
     console.log(result.name); 
     console.log(result._id); 
    }); 
}); 

toArray() метод возвращает массив, который содержит все документы от курсора. Метод полностью выполняет курсор, загружая все документы в ОЗУ и исчерпывая курсор.

Смежные вопросы