Node.js: возвращаемый документ не определен - Mongoose - PullRequest
0 голосов
/ 17 октября 2011
Phone.find {number : "12345678"}, (err,phone) ->
            phone.forEach (item, i) ->
                console.log item
                console.log item.subdomain
                console.log item.subdomain_id
                console.log item.city

возвращает:

{ _id: 4e9b614e01c642c2be000002,
  city: 'San Francisco',
  country: 'US',
  indicative: '234',
  number: '12345678',
  subdomain_id: 4e9b532b01c642bf4a000003 }

undefined
undefined
San Francisco

Почему item.subdomain_id возвращает неопределенное значение, если оно находится в документе?

Редактировать:

Я добавил subdomain_id кСхема и теперь она работает (item.subdomain_id), однако, я не получаю документ поддомен, только идентификатор.Я хочу получить item.subdomain и иметь возможность вызывать методы для него.

Спасибо

Ответы [ 2 ]

0 голосов
/ 30 сентября 2014

Так что я просто искал ответ на тот же вопрос. То, что я делал, использовало поиск Mongoose (через наследование объектов), чтобы использовать запрос поиска json.

Как это выглядело так:

User.find({email:req.body.email}).exec(function(err,user){
  console.log(user.email);
}

То, о чем я забыл и не учел, это то, что возвращаемый объект будет массивом. Это потому, что ваш запрос поиска может легко и часто включать несколько объектов. По этой причине вам нужно будет либо перечислить результаты, либо, если ожидается, что в вашем запросе только findOne (а мы не использовали findOne), вы можете просто вызвать объект 0 следующим образом:

User.find({email:req.body.email}).exec(function(err,user){
  console.log(user[0].email);
}

Надеюсь, это поможет, дайте нам знать, если у вас все еще проблемы.

0 голосов
/ 19 октября 2011

Если вы храните ObjectID, а не внедренные документы, вам нужно использовать функцию populate() для захвата ссылочных объектов:

Phone.find({number : "12345678"}).populate('subdomain_id').run (err, phones) ->
  for phone in phones
    console.log phone

http://mongoosejs.com/docs/populate.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...