为什么我不能删除mongoose模型的对象属性?

当用户注册我的API时,他们返回一个用户对象。 在返回对象之前,我删除散列的密码和salt属性。 我必须使用

user.salt = undefined; user.pass = undefined; 

因为当我尝试

 delete user.salt; delete user.pass; 

对象属性仍然存在并被返回。

这是为什么?

要使用delete您需要通过调用toObject将模型文档转换为普通的JavaScript对象,以便您可以自由处理它:

 user = user.toObject(); delete user.salt; delete user.pass; 

不可configuration的属性不能重新configuration或删除。

你应该使用严格的模式,这样你就会面临错误而不是沉默的失败:

 (function() { "use strict"; var o = {}; Object.defineProperty(o, "key", { value: "value", configurable: false, writable: true, enumerable: true }); delete o.key; })() // TypeError: Cannot delete property 'key' of #<Object>