Undercore's克隆Mongoose对象和删除不起作用的属性
Underscore's Cloning of Mongoose Objects and Deleting Properties Not Working?
我正在使用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!
我不明白为什么使用Undercore在克隆的对象上调用delete
不起作用,但如果我使用破解的JSON.string/JSON.parse,它就会起作用。
对这种行为有什么看法吗?
我刚刚遇到一个类似的问题,试图用id
替换_id
。这样做对我有效:
Schema.methods.toJSON = function(options) {
var document = this.toObject(options);
document.id = document._id.toHexString();
delete(document._id);
return document;
};
如果用delete ui._id
替换delete ui["_id"]
,或者用toObject
代替_.clone
,也许它会开始工作。
在前面的答案基础上,还有一种方法可以实现同样的结果toObject'函数将转换应用于schema.options.toObject.transform函数定义的文档,例如
schema.options.toObject.transform = function(doc, ret) {
ret.id = doc._id;
delete ret._id;
};
相关文章:
- Jquery行删除对我不起作用,如何设置它
- 删除确认对话框在第一次单击时不起作用
- JS动态添加字段-删除按钮不起作用
- 添加/删除类淡入淡出不起作用
- 删除不起作用的父元素和所有子元素
- JavaScript 确认删除不起作用
- 删除不起作用的li元素
- jquery mouseenter 单击以删除不起作用的类
- 添加,编辑,删除不起作用
- jQuery上的php删除不起作用
- 从数组中删除不起作用
- Laravel yajra/Datatables操作删除不起作用
- KnockoutJS.Mapping.FromJS-可观察数组-删除不起作用
- 正在删除不起作用的事件处理程序:“;这个“;上下文在Javascript中丢失
- Undercore's克隆Mongoose对象和删除不起作用的属性
- JQuery类添加/删除不起作用(要使用的未知委派)
- Firebase用户删除不起作用
- 编辑对新添加的数据删除不起作用
- PhoneGap文件删除不起作用
- 行删除不起作用