gpt4 book ai didi

Mongoose 用多个子路径填充路径

转载 作者:行者123 更新时间:2023-12-04 02:27:41 26 4
gpt4 key购买 nike

想象一下我有以下模型:

# MODEL A
schemaA = mongoose.Schema
_bId:
type: mongoose.Schema.Types.ObjectId
ref: "B"

# MODEL B
schemaB = mongoose.Schema
_cId:
type: mongoose.Schema.Types.ObjectId
ref: "C"
_dId:
type: mongoose.Schema.Types.ObjectId
ref: "D"

# MODEL C
schemaC = mongoose.Schema
_eId:
type: mongoose.Schema.Types.ObjectId
ref: "E"

模型 D 和 E 没有任何其他对象引用,因此为方便起见不再列出。

使用所有引用填充模型“A”的最佳做法是什么?
目前我按如下方式解决这个任务(它是一个实例方法,因为我经常需要它):
schemaA.methods =
populateAll: (cb) ->
@
.populate
path: "_bId"
model: "B"
populate:
path: "_cId"
model: "C"
populate:
path: "_eId"
model: "E"
, (error) =>
return cb error, @ if error?
D.findById @._bId._dId
.exec (error, d) =>
return cb error, @ if error?

@._bId._dId = d
return cb error, @

这是我发现填充所有引用的唯一方法,因为在不同模型中使用多个路径填充多个路径非常困难。我已经尝试过像下面这样的解决方案,但可以想象,它只会覆盖以前的人口:
 @
.populate
path: "_bId"
model: "B"
populate:
path: "_cId"
model: "C"
populate:
path: "_eId"
model: "E"
.populate
path: "_bId"
model: "B"
populate:
path: "_dId"
model: "D"

最佳答案

   @
.populate
path: "_bId"
model: "B"
populate: [
{
path: "_cId"
model: "C"
populate:
path: "_eId"
model: "E"
}
{
path: "_dId"
}
]
, (error) =>

这个解决方案完全正常,我刚刚发现了这一点。

关于 Mongoose 用多个子路径填充路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35958275/

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