我得到了这种奇怪的行为。事情就是这样:我进行数据库查询,并希望删除查询返回的json元素。所以这似乎不起作用(即元素没有被删除),
var user=json;
delete user.element;
虽然这有效
var user={element:json.element,blement:'stuff'}
delete user.element;
答案 0 :(得分:3)
我认为你所指的JSON实际上是一个Mongoose文档对象,给出了你添加到问题中的标签。由于该对象附加了它" schema",您可能在那里有规则,例如" required"字段或类似于干扰您正在尝试的操作。
为了获得Object的原始形式,只需在文档结果上使用.toObject()
方法:
Model.findOne({ _id: id}, function(err,doc) {
var raw = doc.toObject();
delete raw.element;
console.log( raw );
});
当然,您始终可以使用.select()
提供的基本表单省略查询结果中返回的字段:
Model.findOne({ _id: id}, '-element', function(err,doc) {
console.log( doc );
});
任何一种形式都会从响应中删除该特定字段,但是如果您希望对结果进行更多控制而不是.select()
的字段投影所能提供的控制,那么请使用.toObject()
表单并进行操作就像一个普通的JavaScript对象。