我知道这已被问到see this但直接修改数据库的答案,但在这种情况下我想从用户对象中删除密码,这样密码就不会发送到前端,而是{{虽然delete
是一个对象,但是1}}无效。
user
任何想法!!我正在使用猫鼬
答案 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
});
此查询仅选择用户名。