Mongoose从多个可能的集合中填充ObjectID
我有一个像这样的mongoose模型
var LogSchema = new Schema({ item: { type: ObjectId, ref: 'article', index:true, }, });
但是“item”可以从多个集合中引用。 有没有可能做这样的事情?
var LogSchema = new Schema({ item: { type: ObjectId, ref: ['article','image'], index:true, }, });
这个想法是“物品”可以是来自“物品”集合或“图像”集合的文件。
这是可能的还是我需要手动填充?
首先是一些基础知识
ref
选项说mongoose当你使用populate()
时哪个集合获取数据。
ref
选项不是强制性的 ,当你不设置它的时候, populate()
要求你使用model
选项dynamic给他一个ref
。
@例
populate({ path: 'conversation', model: Conversation }).
在这里你要说mongooseObjectId背后的集合是Conversation
。
populate
或Schema
不可能是一个refs
数组。
一些其他人Stackoverflow的人问起它。
Soluce 1:填充两个(手动)
尝试填充一个,如果你没有数据,填充第二个。
Soluce 2:改变你的模式
创build两个链接,并设置其中之一。
var LogSchema = new Schema({ itemLink1: { type: ObjectId, ref: 'image', index: true, }, itemLink2: { type: ObjectId, ref: 'article', index: true, }, }); LogSchema.find({}) .populate('itemLink1') .populate('itemLink2') .exec()