2016-01-08 4 views
0

У меня есть документы с несколькими полями, включая массив других документов. Я могу успешно запросить мои целевые документы и извлечь большинство полей, но по какой-то причине я не могу получить массивы.Выбор полей массива из результатов Mongoose

Вот небольшой отрывок о том, как я запрашивая документы и извлечения полей:

Asset.findOne({ 
    project: asset.project, 
    ip: asset.ip 
}, function(err, match) { 
    if (err) { return next(err); } 
    if (match) { 
     console.log(match); 
     console.log(match.project); 
     console.log(match.traffic); 
    }); 
}); 

А вот пример лога консоли:

{ __v: 0, 
    project: 'test', 
    traffic: 
    [ { rport: 39110, 
     protocol: 'tcp', 
     destination: '10.0.7.30', 
     lport: 50 }, 
    { rport: 49123, protocol: 'tcp', source: '10.0.7.29', lport: 21 } ], 
    mac: 'update', 
    ip: '10.0.7.27', 
    _id: 568fbd22ca70246a168d45aa } 

test 

undefined 

Как вы можете видеть console.log(match) дает нам весь документ. В этом документе есть поле project, которое я могу получить с match.project. Однако match.traffic возвращает undefined. Как вы можете видеть, в возвращаемом документе определенно есть поле типа traffic.

Как получить доступ к массивам из моих документов?

ответ

0

Похож на какую-то проблему мангуста, где мангуста возвращает объект мангуста вместо объекта javascript.

Попробуйте это.

Model.find(query).lean().exec(callback)

это будет преобразовать объект мангуста в JavaScript Object, но вы потеряете функции мангуста как obj.save()

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