Node,Mongoose:删除查询结果中的json元素
我得到这个奇怪的行为。 这是事情:我做一个数据库查询,并希望删除查询返回的json的元素。 所以这似乎不工作(即元素不被删除),
var user=json; delete user.element;
而这个工作
var user={element:json.element,blement:'stuff'} delete user.element;
我认为你所指的JSON实际上是一个Mongoose文档对象,给出了你添加到你的问题的标签。 由于该对象被附加到它的“模式”中,因此您可能在那里有一些规则,例如“必需”字段或干扰您正在尝试执行的操作。
为了获得对象的原始forms,只需在文档结果中使用.toObject()
方法:
Model.findOne({ _id: id}, function(err,doc) { var raw = doc.toObject(); delete raw.element; console.log( raw ); });
当然,你可以使用.select()
提供的基本forms,在查询结果中总是省略返回的字段:
Model.findOne({ _id: id}, '-element', function(err,doc) { console.log( doc ); });
任何一种forms都会从响应中删除特定的字段,但是如果您可能需要对结果进行更多的控制,那么可以使用.toObject()
的字段投影来提供更多的控制,然后使用.toObject()
目的。