2016-11-09 6 views
0

можно увидеть населенную значение в консоли, но при попытке доступа к ней я получаю undefined:Mongoose: не может получить доступ к густонаселенным значение

const AccountProfile = new Schema({ 
 
    owner: { type: String }, 
 
    firstName: { type: String }, 
 
    lastName: { type: String }, 
 
    countryId: { type: mongoose.Schema.Types.ObjectId, ref: "Country" } 
 
}); 
 

 
const Country = new Schema({ 
 
    name: String 
 
}); 
 

 
AccountProfile.statics.getProfile = function (username, cb) { 
 
    this.model("AccountProfile").findOne({owner: username}) 
 
    .populate("countryId") 
 
    .exec(function (err, profile) { 
 
     if (err) { 
 
      return cb(err); 
 
     } 
 
     console.log(profile.countryId); 
 
     return cb(null, profile); 
 
    }); 
 
};

Выход имеет следующий формат: { _id: 57a9d5cda3c91dda14eb50f0, Name: 'UK' }

Печать profile.countryId._id выглядит хорошо, но profile.countryId.Name является undefined!

Любой ключ? Использование мангуста версии 4.6.6

+0

Проверьте, есть ли какие-либо пробелы в ключевых – chridam

+0

Можете ли вы показать схему Country? –

+0

@chridam Это не проблема. Вывод 'JSON.stringify (profile.countryId)' является '{" _id ":" 57a9d5cda3c91dda14eb50f0 "," Name ":" UK "}' – ierax

ответ

2

В схеме вы определили поле «имя» не «Имя» Попробуйте с получением profile.countryId.name

+0

, но как вы получаете «Имя» в консоли ... ..... если его не определено в 'Country' Schema –

+0

Если ваша проблема решена ... можете ли вы принять этот ответ и отметить это :) –

+0

Спасибо. Проблема заключалась в том, что в фактическом документе mongo поле называлось 'Name', тогда как в моем коде' name' (я создал схему mongoose после импорта существующих данных в mongo, к которым я хотел получить доступ, используя код). Поэтому мне пришлось переименовать свое поле в схеме мангуста в «Имя», чтобы оно соответствовало тому, что было в монго. Это объясняет, почему «Имя» было напечатано на консоли – ierax

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

  • Нет связанных вопросов^_^