Я пытаюсь использовать функцию популяции мангустов. Запись данных не является проблемой; все идентификаторы объектов хранятся в родительском (Account) документе. Я проверил это с помощью простого запроса Account.find (). Однако, когда я пытаюсь запросить «учетные записи» и заполнить его соответствующими видеообъектами, объект «видео» в документе учетной записи пуст. Я прочитал все возможные ресурсы и документацию по этому вопросу, и я как бы застрял на этой теме. Кто-нибудь может мне помочь? Спасибо!
Схема
var videoSchema = new Schema({
url: String,
status: String,
});
mongoose.model('Video', videoSchema );
var accountSchema = new Schema({
name: { type: String, required: true },
videos: [{ type: Schema.Types.ObjectId, ref: 'Video' }]
});
mongoose.model('Account', accountSchema );
Написать данные
new Video({ userAgent: referrer: req.headers.['url'], status: "created" }).save(function(err, video){
Account.update({ _id: req.headers['appid'] }, {$push: { videos: [ video._id ] } }, function (err, account){
if(err) console.log(JSON.stringify(err));
});
});
Получить данные, используя заполнение
Account.findById(req.params.id).populate('videos').exec(function(err, account){
console.log(JSON.stringify(account));
res.render('./account/show', account);
});
1 ответ
Ваш оператор $push
помещает массив в массив, что приводит к сбою популяции.
Используйте вместо этого:
{ $push: { videos: video._id } }
Если в конечном итоге у вас есть массив видео, который вы хотите объединить с существующим свойством videos
учетной записи, вы можете использовать $each
:
{ $push: { videos : { $each : [ video1._id, video2._id, ... ] } } }
Похожие вопросы
Новые вопросы
node.js
Node.js - это неблокирующая асинхронная среда ввода-вывода, основанная на событиях, использующая движок Google V8 JavaScript и библиотеку libuv. Он используется для разработки приложений, которые интенсивно используют возможность запуска JavaScript как на клиенте, так и на стороне сервера, и, следовательно, выигрывают от повторного использования кода и отсутствия переключения контекста.