我创建了一个schema.methods.toAuthJSON
,它将返回过滤后的数据。
虽然我使用findOne()
它工作得很好。但是,当我只使用find()
时,它无法正常工作。我应该如何做对吗?
Member.findOne().exec((err, member) => {
res.json(member.toAuthJSON())
})
答案 0 :(得分:1)
这个问题肯定需要更多细节,但 IF 我们假设所显示的findOne
代码有效但未显示的find
代码没有,那么可能是返回值未正确用于find
代码。
find
代码的假设:Member.find().exec((err, member) => {
res.json(member.toAuthJSON())
});
同样,如果这个假设是正确的,那么它是对find
返回值的误解。虽然findOne
将返回单个文档,但find
会返回数组文档。因此,需要更新假定的代码以迭代返回的数组,为每个文档调用自定义方法。
一种方法是使用地图:
Member.find().exec((err, members) => {
res.json(members.map((member) => member.toAuthJSON()));
});
此方法将映射返回的自定义方法返回新输出数组的文档数组。