我在猫鼬中有一个引用另一个模式的模式,例如:
OrderSchema = new Schema({
createdBy: {
ref: 'User',
type: ObjectId
}
})
在我的用户模式中,我使用了一个软删除插件来保存引用。对于普通用户查找查询,插件将使用预查找钩子向查询添加一个where {deleted:{$ne: true}}。
当我试图查找已填充createdBy的所有订单时,也会应用已删除的查询,这样就不会填充任何(软)已删除的用户。我可以通过在填充选项中提供一个"includeDeleted“参数来创建软删除查询,这对于特定的查询非常有效。
我希望能够在模式定义中指定此选项,这样我就不会依赖每个查询来包含这些选项,例如:
// doesnt work, options are not supplied to populate query
OrderSchema = new Schema({
createdBy: {
ref: 'User',
type: ObjectId,
options: {
includeDeleted: true
}
}
})
虚拟填充确实是这样工作的:
// WORKS
OrderSchema.virtual('_createdBy', {
ref: 'User',
...,
options: {
includeDeleted: true
}
})
也许还有其他选项可以在模式定义中提供默认填充选项?我在文件里找不到任何东西。
另一种解决方案是手动查找软删除插件中的填充选项,但这要求我知道查询是否是预查找钩子中的“人口查询”。
发布于 2022-09-08 14:13:20
https://mongoosejs.com/docs/schematypes.html,
填充:对象,设置默认填充选项
这可能会有帮助。我觉得你应该用这个方法
OrderSchema = new Schema({
createdBy: {
ref: 'User',
type: ObjectId,
populate: {
includeDeleted: true
}
}
})
https://stackoverflow.com/questions/71349147
复制相似问题