[英]Mongoose: setting default populate options
我在 mongoose 中有一个架构,它引用了另一个架构,例如:
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
}
})
也许还有其他选项可以在架构定义中提供默认填充选项? 我无法在文档中找到任何内容。
另一种解决方案是在软删除插件中手动查找人口选项,但这需要我知道查询是否是预查找挂钩中的“人口查询”。
https://mongoosejs.com/docs/schematypes.html ,
填充:Object,设置默认填充选项
这可能会有所帮助。 我认为你应该这样使用它
OrderSchema = new Schema({
createdBy: {
ref: 'User',
type: ObjectId,
populate: {
includeDeleted: true
}
}
})
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.