【问题标题】:Remove value from Javascript object从 Javascript 对象中删除值
【发布时间】:2017-06-19 16:19:18
【问题描述】:

所以我从猫鼬那里得到了这个对象,它是一个用户。我想删除散列密码字段,但我似乎无法删除它。

尝试了以下方法:

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);
  });
});

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

编辑:通过向猫鼬调用传递一个选项来解决它:

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

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

【问题讨论】:

  • 这里只是猜测,但应该是post.password而不是post['password']
  • post.hasOwnProperty('password') 返回什么?可能是它是具有密码属性的祖先对象...
  • @B_CooperA 没关系,两个都试了
  • 对象是否密封? Object.seal()
  • @B_CooperA 它不应该有所作为;某些对象属性可以标记为“不可删除”。尝试深度复制对象并从副本中删除密码。对于深拷贝,我使用 JSON.parse(JSON.stringify(object)),结果它是最快的:)

标签: javascript node.js mongodb


【解决方案1】:

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);
});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-29
    • 2016-05-19
    相关资源
    最近更新 更多