首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >猫鼬:设置默认填充选项

猫鼬:设置默认填充选项
EN

Stack Overflow用户
提问于 2022-03-04 09:19:50
回答 1查看 412关注 0票数 1

我在猫鼬中有一个引用另一个模式的模式,例如:

代码语言:javascript
运行
复制
OrderSchema = new Schema({
  createdBy: {
     ref: 'User',
     type: ObjectId
  }
})

在我的用户模式中,我使用了一个软删除插件来保存引用。对于普通用户查找查询,插件将使用预查找钩子向查询添加一个where {deleted:{$ne: true}}。

当我试图查找已填充createdBy的所有订单时,也会应用已删除的查询,这样就不会填充任何(软)已删除的用户。我可以通过在填充选项中提供一个"includeDeleted“参数来创建软删除查询,这对于特定的查询非常有效。

我希望能够在模式定义中指定此选项,这样我就不会依赖每个查询来包含这些选项,例如:

代码语言:javascript
运行
复制
// doesnt work, options are not supplied to populate query
OrderSchema = new Schema({
  createdBy: {
     ref: 'User',
     type: ObjectId,
     options: {
       includeDeleted: true
     }
  }
})

虚拟填充确实是这样工作的:

代码语言:javascript
运行
复制
// WORKS
OrderSchema.virtual('_createdBy', {
   ref: 'User',
   ...,
   options: {
      includeDeleted: true
   }
})

也许还有其他选项可以在模式定义中提供默认填充选项?我在文件里找不到任何东西。

另一种解决方案是手动查找软删除插件中的填充选项,但这要求我知道查询是否是预查找钩子中的“人口查询”。

EN

回答 1

Stack Overflow用户

发布于 2022-09-08 14:13:20

https://mongoosejs.com/docs/schematypes.html

填充:对象,设置默认填充选项

这可能会有帮助。我觉得你应该用这个方法

代码语言:javascript
运行
复制
OrderSchema = new Schema({
createdBy: {
 ref: 'User',
 type: ObjectId,
 populate: {
   includeDeleted: true
 }
 }
})
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71349147

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档