【发布时间】:2012-03-14 04:59:00
【问题描述】:
我正在使用 Mongoose,我想在向客户端发送 JSON 响应之前从我的 Mongoose 实例中删除 _id 属性。
例子:
var ui = _.clone(userInvite);
delete ui["_id"];
console.log(JSON.stringify(ui)); //still has "_id" property, why?
以前的不行。
但是,如果我这样做:
var ui = JSON.parse(JSON.stringify(userInvite)); //poor man's clone
delete ui["_id"];
console.log(JSON.stringify(ui)); //"_id" is gone! it works!
我不明白为什么在使用下划线的克隆对象上调用delete 不起作用,但如果我执行 hacky JSON.string/JSON.parse,它会起作用。
对这种行为有什么想法吗?
【问题讨论】:
-
可能 mongoose 正在诱骗您并将
_id实现为 getter/setter 而不是属性。试试Object.getOwnPropertyDescriptor(userInvite, "_id").get -
修改克隆猫鼬对象的任何属性也是不可能的。
标签: javascript node.js clone mongoose underscore.js