Виртуальный Mongoose возвращает ноль, когда foreignField является массивом - PullRequest
0 голосов
/ 10 ноября 2019

У меня есть две схемы, одна для записей и одна для пользователей. Схема «Пользователи» имеет массив под названием «записи», который ссылается на схему записей. Мне бы хотелось, чтобы в схеме «Запись» отображался виртуальный владелец с именем «Владельцы», который показывает всех пользователей, чья запись указана в их массиве «записей».

Я пытался поместить «записи» в 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();
  });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...