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()目的。