从Javascript对象中删除值

时间:2017-02-02 14:30:22

标签: javascript node.js mongodb

所以我从mongoose得到这个对象,它是一个用户。我想删除哈希密码字段,但我似乎无法删除它。

尝试以下方法:

apiRoutes.get('/user/:id', function(req, res, next) {
  User.findById(req.params.id, function(err, post) {
    if (err) return next(err);
    delete post['password'];
    res.json(post);
  });
});

肯定有一个密码字段,当我调试/ console.log时,它打印出密码的对象。

编辑:通过将选项传递给mongoose调用来解决此问题:

User.findById(req.params.id, '-password', function(err, post) { /* ... */ });

但仍然没有解释为什么删除不起作用?

1 个答案:

答案 0 :(得分:0)

似乎mongoose返回的对象不是真正的javascript对象。

我必须将它转换为一个对象才能在其上使用基本功能:

apiRoutes.get('/user/:id', function (req, res, next) {
User.findById(req.params.id, function (err, post) {
    if (err) return next(err);
    post.toObject();
    delete post.password;
    res.json(post);
});