gpt4 book ai didi

node.js - 具有多个 foreignFields 的 Mongoose 虚拟

转载 作者:搜寻专家 更新时间:2023-11-01 00:49:19 26 4
gpt4 key购买 nike

我有一个 Schema Events,它有一个键 creator,它是对创作者的引用,还有一个键 musicians,它是一个数组音乐家。

音乐家可以创建事件 或作为音乐家参与。我想为音乐家创建一个名为 events 的虚拟属性(property),其中将包含音乐家创建的所有事件和参与的事件。

我试过这个:

MusicianSchema.virtual('events', {
ref: 'Events',
localField: '_id',
foreignField: ['creator, musicians'],
justOne: false,
});

但这会返回一个空数组。有什么方法可以让它工作,或者 mongoose 还没有这个功能?

编辑

这是事件架构:

const eventSchema = {
title: {
type: String,
trim: true,
required: true
},
description: {
type: String,
trim: true
},
startDate: {
type: Number,
required: true
},
endDate: {
type: Number,
required: true
},
picture: {
type: String,
get: getPicture,
},
location: {
type: [Number],
index: '2dsphere',
get: getLocation
},
creator: {
type: mongoose.Schema.Types.ObjectId,
required: true,
refPath: 'creatorType'
},
musicians: [{
type: mongoose.Schema.Types.ObjectId,
ref: 'Musician'
}],
creatorType: {
type: String,
required: true,
enum: ['Musician', 'Entity']
}
};

和音乐家模式:

const musiciansSchema = {
name: {
type: String,
trim: true,
required: true
},
picture: {
type: String,
get: getPicture,
},
description: String,
type: {
type: String,
required: true,
enum: ['Band', 'Artist'],
},
};

最佳答案

具有多个 foreignField 功能的 Mongoose virtual 目前不可用,已在 GitHub 上请求对新功能的建议,

现在你需要使用单独的虚拟/填充

MusicianSchema.virtual('creatorEvents', {
ref: 'Events',
localField: '_id',
foreignField: 'creator',
justOne: false,
});

MusicianSchema.virtual('musiciansEvents', {
ref: 'Events',
localField: '_id',
foreignField: 'musicians',
justOne: false,
});

关于node.js - 具有多个 foreignFields 的 Mongoose 虚拟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54640195/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com