无法从猫鼬Model.create返回的对象中删除字段

时间:2018-07-30 15:37:20

标签: node.js mongoose

我将Mongoose与NodeJS结合使用。当我创建模型的新实例(称为表达式)时,它将对象添加到数据库中,并向我返回新创建的模型的对象。

但是..我无法从此json对象中删除字段。

var savedExpr = await Expression.create(expr);
delete savedExpr["__v"]
return savedExpr;

此代码仅返回包含__v字段的原始saveExpr。有什么想法吗?

谢谢。

1 个答案:

答案 0 :(得分:3)

您无法删除其中某些属性,因为它们已定义为"non-configurable"

 var savedExpr = await Expression.create(expr);
 var savedExprCopy = Object.assign({}, savedExpr);
 delete savedExprCopy["__v"];
 return savedExprCopy;

OR

 var savedExpr = await Expression.create(expr);
 savedExpr = savedExpr.toObject();
 delete savedExprCopy["__v"];
 return savedExprCopy;

有趣的是,对于知识而言, __v属性默认情况下设置为true,您可以通过将版本密钥选项设置为false来禁用架构定义中的__v属性。 例如:

var expressionSchema = new Schema({ ... attributes ... }, { versionKey: false });