模式方法不适用于mongodb中的find方法

时间:2018-04-09 17:46:07

标签: mongodb mongoose

我创建了一个schema.methods.toAuthJSON,它将返回过滤后的数据。 虽然我使用findOne()它工作得很好。但是,当我只使用find()时,它无法正常工作。我应该如何做对吗?

Member.findOne().exec((err, member) => {

res.json(member.toAuthJSON())
})

1 个答案:

答案 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()));
});

此方法将映射返回的自定义方法返回新输出数组的文档数组。