Mongoose Populate虚拟返回数组中的数组

时间:2018-06-08 16:08:02

标签: arrays mongodb mongoose virtual mongoose-populate

我正在尝试使用外键填充子文档[" ENROLLMENTS"]但是当有多个匹配时,它会返回一个数组内的注册数组。当只有一个匹配时,它返回一个带有一个对象的数组。不确定为什么会发生这种情况或修复。

预期:  报名[{...},{...},{...}]

实际:  报名[[{...},{...},{...}]]

下面我有一个具有虚拟注册的客户端的架构。这些是由分配者和价值的组合键相关联的。目前,我正在尝试使用该值来填充文档。

我也对其他解决方案持开放态度。

这是客户端架构

from pip._internal import main
main(...)

这是我的虚拟,注册尝试匹配值字段。

 const clientSchema = new Schema({
   identifiers: [
     {
       value: { type: String, required: true },
       use: { type: String },
       assigner: { type: String, required: true },
       _id: false
     }
   ],
   ...
 },
 {
  timestamps: { createdAt: 'createdAt', updatedAt: 'updatedAt' },
  toJSON: { virtuals: true }
 }
);

这是注册架构

 clientSchema.virtual('enrollments', {
   ref: 'Enrollment',
   localField: 'identifiers.value',
   foreignField: 'subject.value',
   justOne: false
});

这是我的填充方法

const enrollmentSchema = new Schema(
{
  organization: { type: String, ref: 'Organization' },
  identifiers: [
    {
      value: { type: String, required: true },
      assigner: { type: String, required: true },
      _id: false
    }
  ],
  subject: {
    value: { type: String, required: true },
    assigner: { type: String, required: true },
    _id: false
  },
  enrollmentDate: { type: Date, required: true },
  ...
},
{
   timestamps: { createdAt: 'createdAt', updatedAt: 'updatedAt' },
   toJSON: { virtuals: true }
});

这是我回来的原因

 return await Client.find(query)
 .populate({
   path: 'enrollments',
   model: 'Enrollment',
   populate: {
    path: 'progressNotes',
    model: 'ProgressNote',
    options: {
      limit: 30,
      sort: { 'performed.period.start': -1 }
     }
   },
 })
 .select(Projections.CLIENT_FULL_WITH_ENROLLMENTS())
 .exec();

0 个答案:

没有答案