当foreignField是一个数组时,猫鼬虚拟返回null

时间:2019-11-09 23:56:28

标签: mongoose mongoose-schema

我有两种模式,一种用于记录,一种用于用户。 Users模式具有一个称为“ records”的数组,该数组引用Records模式。我想在Record模式中使用一个虚拟的“所有者”,它显示所有在“ records”数组中列出了Record的用户。

我尝试将“记录”放入“ {owns”虚拟”的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();
  });

0 个答案:

没有答案