简体   繁体   English

从Javascript对象中删除值

[英]Remove value from Javascript object

So I have this object I get from mongoose, it's a user. 所以我有一个从猫鼬那里得到的对象,它是一个用户。 I want to delete the hashed password field but I can't seem te remove it. 我想删除哈希密码字段,但似乎无法删除它。

Tried the following: 尝试了以下内容:

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

There's definitely a password field there, when I debug/console.log the object it prints out the password. 绝对有一个密码字段,当我调试/控制台.log对象时,它会打印出密码。

EDIT: Solved it by passing an option to the mongoose call: 编辑:通过将选项传递给猫鼬调用来解决:

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

But still doesn't explain why delete doesn't work? 但是仍然不能解释为什么删除不起作用?

It seems like the object that mongoose returned wasn't an actual javascript object. 似乎猫鼬返回的对象不是实际的javascript对象。

I had to convert it to an object in order to use basic functions on it: 我必须将其转换为对象,以便对其使用基本功能:

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM