繁体   English   中英

Mongoose:设置默认填充选项

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM