Mongoosejs - 我可以在“查找”的后查询中间件中修改文档吗?

Posted

技术标签:

【中文标题】Mongoosejs - 我可以在“查找”的后查询中间件中修改文档吗?【英文标题】:Mongoosejs - Can I modify docs in post query middleware of 'find'? 【发布时间】:2018-11-29 03:47:48 【问题描述】:

我使用的是 mongoose.js 版本 5.1.6。有没有办法在查询find 后自动执行 doc.toObject()?我不确定我是否可以在find的中间件中做到这一点。

schema.post('find', function(docs) 
  // Can I change the docs that return by find() by modify the docs here?
)

【问题讨论】:

“我可以通过修改此处的文档来更改 find() 返回的文档吗?” - 你...尝试过吗? 您可以将.lean() 链接到您的查询。 toObject() 处理文档,.lean() 处理查询。 mongoosejs.com/docs/api.html#query_Query-lean 当然,你不能在那些物体上使用任何猫鼬模型的东西...... @ippi 是的,但我使用toObject(),因为它可以转换原始数据,例如删除一些敏感信息 ***.com/a/29988752/1497533 .post('init' 似乎可以解决问题 似乎使用 .select 告诉数据库服务器根本不返回该敏感信息会更好——但您可以使用 post init 或 post find 【参考方案1】:

是的,你可以。你必须做这样的事情

schema.post('find', function(docs) 
  // Here you can modify the doc returned by find
doc._doc.<some attribute> = 'asdasdasd'
)

【讨论】:

以上是关于Mongoosejs - 我可以在“查找”的后查询中间件中修改文档吗?的主要内容,如果未能解决你的问题,请参考以下文章

Mongoosejs:将 query.or() 与地理空间查询一起使用

MongooseJS - 限制子文档中的文档数量

是否可以在 mongoosejs 模式中填充自引用?

如何在 mongoosejs 中深度填充多个路径?

根据知道路径的后半部分查找文件[重复]

Mongoosejs 刷新文档