【发布时间】: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