Node,Mongoose:使用delete从查询结果中删除json元素

时间:2014-06-03 21:30:24

标签: node.js mongodb mongoose mongodb-query

我得到了这种奇怪的行为。事情就是这样:我进行数据库查询,并希望删除查询返回的json元素。所以这似乎不起作用(即元素没有被删除),

var user=json;
delete user.element;

虽然这有效

var user={element:json.element,blement:'stuff'}
delete user.element;

1 个答案:

答案 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对象。