如何从猫鼬查询结果中省略字段?

时间:2019-08-05 10:26:24

标签: node.js mongodb mongoose nosql

使用findById获取猫鼬文档后,我无法过滤/忽略某些字段

我尝试了const { password, ...user } = await UserModel.findById(123);

但是用户不是普通的js对象而是猫鼬文档。

请注意,.lean().select()不是一个选择。

理想情况下,我想要类似于const { password, ...user }但没有瘦身的东西。

我想删除user.password可以用,但是我不想弄乱猫鼬文档本身。因为它具有字段的设置器/获取器。

2 个答案:

答案 0 :(得分:0)

let user =等待UserModel.findById(123,'user');

在这里您可以输入投影作为查询中的第二个参数,并添加更多键以作为“用户密码”等发送响应。

答案 1 :(得分:0)

在猫鼬Document中,所有返回的文档都位于属性_doc中。理想的推荐方法是在查询上使用lean()。但是要回答您的用例,请尝试以下操作:

const result = await UserModel.findById(123);
const { password, ...user } = result._doc;