gpt4 book ai didi

javascript - 使用 Mongoose 引用未知模型类型的对象

转载 作者:太空宇宙 更新时间:2023-11-04 00:53:37 24 4
gpt4 key购买 nike

使用Mongoose当该文档的模型/类型未知时,是否可以有一个引用另一个对象的字段?

例如,我有模型:照片、评论、提交、帖子等,我希望有一个引用它们的“赞”模型:

var Like = new Mongoose.Schema({
// What would the value of `ref` be, should it just be left out?
target: { type: Schema.Types.ObjectId, ref: '*' }
});

据我了解,ref 需要是一个模型。我可以把它全部省略,但我仍然会受益于 Mongoose 的 populate method就这样吗?

最佳答案

您可以采取两种方法。

1。调用populate时传入ref的值

基于Populating across Databases部分。当您调用populate时,您可以指定要使用的模型。

Like.find().populate({
path: 'target',
model: 'Photo'
})

这要求您在填充之前知道所需的模型。

2。将 ref 的值与目标一起存储

基于Dynamic References部分.

您需要首先将目标调整为类似于以下内容:

var Like = new Mongoose.Schema({
target: {
kind: String,
item: {
type: Schema.Types.ObjectId,
refPath: 'target.kind'
}
}
});

target.kind 是将用于 populate 的“ref”值,target.item 是 ObjectId。我们使用 refPath 而不是 ref 进行动态引用。

然后,当您调用 populate 时,您将执行以下操作:

Like.find().populate('target.item')

请注意,我们填充'target.item',而不是仅填充'target'

关于javascript - 使用 Mongoose 引用未知模型类型的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31102549/

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