如何从mongodb中删除被提取对象的密钥?

时间:2017-11-04 09:39:43

标签: node.js mongodb

我知道这已被问到see this但直接修改数据库的答案,但在这种情况下我想从用户对象中删除密码,这样密码就不会发送到前端,而是{{虽然delete是一个对象,但是1}}无效。

user

任何想法!!我正在使用猫鼬

2 个答案:

答案 0 :(得分:1)

您正尝试在Mongoose包装器对象上使用delete关键字。 delete关键字将与本机Javascript对象一起使用。为此,您需要使用Mongoose提供的lean()函数。

试试这个 -

User.find({}).lean().then

我刚刚在查询后添加了lean()函数。现在,您可以使用delete关键字修改对象。

答案 1 :(得分:0)

为什么不从查询中排除密码?查找的第二个参数允许您在结果中包含/排除键。

User.find({}, { "password": 0 }).then(function(users) {
  // The users should not contain the password key here
});

我认为这可以从Mongoose v4.0.0获得。同样,您也可以在查找后使用select运算符。

User.find({}).select({ "name": 1 }).then(function(users) {
  // Do something 
});

此查询仅选择用户名。