猫鼬-修改帖子查找结果

时间:2019-08-20 00:18:42

标签: mongodb mongoose middleware

我想在“ 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查询的结果中。

3 个答案:

答案 0 :(得分:0)

您的问题出在result.team("Real Madrid")

更改为

result.team="Real Madrid"

result['team']="Real Madrid"     (Quotes are required)

尝试

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

    })

答案 1 :(得分:0)

要将其他字段添加到查询返回的文档中,可以使用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
})

答案 2 :(得分:0)

你应该这样使用

PersonSchema.post('find', function(result) {

    result= result.toObject();

    console.log('HOOW: Post Find', result)
    result.team("Real Madrid")
    return result
})