首页 > 解决方案 > Mongoose - 修改帖子查找结果

问题描述

我想在 `schema.post('find')' 中间件中修改结果,但这似乎是不可能的:

const PersonSchema = new mongoose.Schema({ name: String })

PersonSchema.post('find', function(result) {
    console.log('HOOW: Post Find', result)
    result.team("Real Madrid")
    return result

})

const Person = mongoose.model('Person', PersonSchema)

每当我尝试执行查找查询时,都会执行 console.log 语句,但是team永远不会添加该字段。

如何将此字段添加到我的结果中?

笔记:

我的真实代码有点复杂,我需要对数据库进行一些查询并将这些结果添加到find查询结果中。

标签: mongodbmongoosemiddleware

解决方案


要向查询返回的文档添加其他字段,您可以使用lean()

Person.find({...}).lean();

而且因为find()方法的结果是一个数组,所以你需要遍历它并向每个元素添加字段:

PersonSchema.post('find', function(result) {
  console.log('HOOW: Post Find', result)
  result.forEach(val => val.team="Real Madrid");
  return result
})

推荐阅读