我将Mongoose与NodeJS结合使用。当我创建模型的新实例(称为表达式)时,它将对象添加到数据库中,并向我返回新创建的模型的对象。
但是..我无法从此json对象中删除字段。
var savedExpr = await Expression.create(expr);
delete savedExpr["__v"]
return savedExpr;
此代码仅返回包含__v字段的原始saveExpr。有什么想法吗?
谢谢。
答案 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 });