从 Javascript 对象中删除值
Posted
技术标签:
【中文标题】从 Javascript 对象中删除值【英文标题】:Remove value from Javascript object 【发布时间】: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)),结果它是最快的:)
【参考方案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);
);
【讨论】:
以上是关于从 Javascript 对象中删除值的主要内容,如果未能解决你的问题,请参考以下文章
javascript中,知道一个值,如何删除数组中的这个值的元素。
使用 JavaScript 从对象中递归删除属性和值的最快方法是啥?