为什么我不能删除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>