【问题标题】:Mongoose - Modify post find resultMongoose - 修改帖子查找结果
【发布时间】:2019-08-20 00:18:42
【问题描述】:

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

【问题讨论】:

    标签: mongodb mongoose middleware


    【解决方案1】:

    你的问题在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
    
        })
    

    【讨论】:

      【解决方案2】:

      要为查询返回的文档添加附加字段,您可以使用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
      })
      

      【讨论】:

        【解决方案3】:

        你应该这样使用

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

        【讨论】:

          猜你喜欢
          • 2019-05-31
          • 1970-01-01
          • 2015-04-09
          • 1970-01-01
          • 1970-01-01
          • 2021-12-16
          • 1970-01-01
          • 1970-01-01
          • 2023-03-17
          相关资源
          最近更新 更多