У меня есть две схемы, одна для записей и одна для пользователей. Схема «Пользователи» имеет массив под названием «записи», который ссылается на схему записей. Мне бы хотелось, чтобы в схеме «Запись» отображался виртуальный владелец с именем «Владельцы», который показывает всех пользователей, чья запись указана в их массиве «записей».
Я пытался поместить «записи» в foreignField
для«Владельцы» виртуальные, но «владельцы» просто отображаются как null
, когда я запрашиваю запись.
const mongoose = require('mongoose');
const userSchema = new mongoose.Schema({
name: { type: String, required: true },
records: [{ type: mongoose.Schema.Types.ObjectId, ref: 'Record' }]
});
const recordSchema = new mongoose.Schema({
title: { type: String, required: true }
});
recordSchema.virtual('owners', {
ref: 'User',
localField: '_id',
foreignField: 'records'
})
recordSchema.set('toObject', { virtuals: true })
const User = mongoose.model('User', userSchema);
const Record = mongoose.model('Record', recordSchema);
mongoose.connect('mongodb://localhost/test')
.then(() => Record.create({ title: 'Test Record' }))
.then(record => User.create({
records: [record.id],
name: 'Test User',
}))
.then(user => {
console.log(user);
return Record.find();
})
.then(records => {
console.log(records);
return mongoose.disconnect();
})
.catch(err => {
console.error(err);
return mongoose.disconnect();
});