所以我从猫鼬那得到这个东西,这是一个用户。 我想删除哈希密码字段,但我似乎无法删除它。
试过以下几点:
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它打印出密码的对象时,肯定有密码字段。
编辑:解决它通过传递选项到猫鼬调用:
User.findById(req.params.id, '-password', function(err, post) { /* ... */ });但仍不能解释为什么删除不起作用?
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.
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?
最满意答案
它看起来像猫鼬返回的对象不是一个实际的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); });It seems like the object that mongoose returned wasn't an actual javascript object.
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); });
更多推荐
发布评论