Node.js 如何从mongodb获取的对象中删除密钥?

Node.js 如何从mongodb获取的对象中删除密钥?,node.js,mongodb,Node.js,Mongodb,我知道有人问过这个问题,但答案是直接修改数据库,但在这种情况下,我想从用户对象中删除密码,这样密码就不会发送到前端,但删除不起作用,尽管用户是一个对象 User.find({}).then(function(users) { let counter = 1; users.forEach(function(user) { delete user.password; console.log("after delete",user) // passwor

我知道有人问过这个问题,但答案是直接修改数据库,但在这种情况下,我想从用户对象中删除密码,这样密码就不会发送到前端,但删除不起作用,尽管用户是一个对象

User.find({}).then(function(users) {
    let counter = 1;
    users.forEach(function(user) {
        delete user.password;
        console.log("after delete",user) // password key/value exist

        userMap[counter] = user;
        counter++;
    });

    return userMap;
});
任何想法!!我正在使用mongoose

您正在尝试在mongoose包装器对象上使用delete关键字。delete关键字将用于本机Javascript对象。为此,您需要使用Mongoose提供的精益功能

试试这个-

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

我只是在find查询之后添加了lean函数。现在可以使用delete关键字修改对象。

为什么不将密码从查询本身中排除?find的第二个参数让您从结果中包括/排除键

User.find({}, { "password": 0 }).then(function(users) {
  // The users should not contain the password key here
});
我认为这可以从MongooseV4.0.0中获得。同样,也可以在查找后使用select运算符

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

此查询将只选择用户的名称。

它应该可以工作。您确定用户有一个名为password的字段吗。您也可以显示您的console.log输出吗?