我正在查询用户集合,我不想发回密码。我的主要观点是,我是否可以在MongoDB对象上执行Java操作。以下是我的代码:
router.get("/:userId", async (req, res) => {
try {
const user = await User.findById(req.params.userId);
delete user.password;
if (user.parent !== undefined) {
const referrer = await User.findOne({ _id: user.parent });
return res.json({ user, referrer });
}
res.json(user);
} catch (error) {
res.status(400).json(error);
}
});
我要拿到这个产量
{
"is_deleted": false,
"packages": [],
"_id": "5ed102f3fefa080404db01df",
"name": "parent",
"email": "parent@parent.com",
"gender": "m",
"password": "$2b$10$HTGaoy.AVmoG/A0c/vkikO0NnEBte7f2tvwt2FQE94bZlNiYTeX8i",
"__v": 0
}
我试图对MongoDB对象列表执行筛选,但也失败了。
3条答案
按热度按时间v7pvogib1#
您可以分解从查询返回的对象
您还可以配置
User
模型,以便在默认情况下从查询结果中排除password
字段。如果您不想在默认情况下排除某个字段,可以调用
select
函数并指定不希望包含在查询结果中的属性。有关这方面的更多信息,请参见SchemaType.Prototype.select()
qzwqbdag2#
我会使用
findeOne
,最后的投影如下:通过将值设置为
0
,可以排除更多字段wlzqhblo3#
当作为JSON发送到客户端时,您可以将未定义指定给该属性以忽略它。喜欢: