我有一个对象数组。数组的每个元素都有一个我想要删除的属性。 我的代码:
//remove the version key '__v'
var elements = elements.map(function (element) {
if (element.__v !== undefined) {
delete element.__v;
//console.log(element.__v);
}
return element;
});//elements.map()
console.log(elements);
如果我取消注释console.log(element.__v);
,我会得到__v的属性值。
但是,在最终输出中,仍然包含__v属性的元素仍然存在。
答案 0 :(得分:4)
这是因为你有一个Mongoose模型(假设你使用mongoose,因为版本控制的__v属性)被冻结(防止删除属性表单),你可以做的一件事是:
//remove the version key '__v'
var elements = elements.map(function (element) {
element = element.toJSON();
if (element.__v !== undefined) {
delete element.__v;
//console.log(element.__v);
}
return element;
});//elements.map()
console.log(elements)
但这不是最佳解决方案,因为您可能会丢失许多可能已在模型上编码的功能(例如实例方法/通过.populate获取更多数据的能力等)
如果在删除属性后不需要模型功能,请使用此解决方案。