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