#mongodb #mongoose #mongoose-populate
Вопрос:
Я следовал этой документации, чтобы заполнить объект.
// in model.ts I defined this schema
const parentSchema = new mongoose.Schema({
... // more properties
someSettings: { type: mongoose.Schema.Types.ObjectId, ref: 'some'} // in model.ts
});
// in nested-model.ts I defined this model the parent is referring to
export const ChildModel = mongoose.model<ISomeSettings>('some', SomeSchema); // in nested-model.ts
При сохранении документа я делаю следующее:
const parent = new parentModel(data);
const child = new childModel(childSettings)
parent.someSettings = child._id;
Это работает должным образом и создает две коллекции (родительскую и дочернюю) и сохраняет идентификатор ребенка в родительской коллекции в свойстве «someSettings».
Теперь, когда я хочу получить два объединенных объекта, я делаю это:
const parent = await parentModel.findOne({ someId: id }).exec()
if (parent !== null) {
const fullObject = await parent.populate('someSettings').execPopulate()
}
return fullObject;
Проблема в том, что в качестве «некоторых настроек» я получаю только идентификатор от дочернего объекта (что правильно), а не фактические свойства от дочернего объекта.
Любая помощь будет признательна!