【问题标题】:Node, Mongoose: Remove json element from query result with delete节点,猫鼬:使用删除从查询结果中删除 json 元素
【发布时间】:2016-09-26 21:18:40
【问题描述】:

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

var user=json;
delete user.element;

虽然有效

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

【问题讨论】:

  • DB结果是JSON还是JS对象?在像对象一样访问它之前,您可能必须JSON.parse() 结果。

标签: node.js mongodb mongoose mongodb-query


【解决方案1】:

我认为你所指的 JSON 实际上是一个 Mongoose 文档对象,因为你添加了你的问题的标签。由于该对象附加到它的“模式”,因此您可能在其中有规则,例如“必需”字段或干扰您尝试执行的操作的规则。

为了获取原始形式的对象,只需在文档结果上使用.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 对象。

【讨论】:

  • 谢谢!我一直以为 findOne 返回的是 JSON,这也解释了我遇到的其他一些问题……
猜你喜欢
  • 1970-01-01
  • 2018-06-11
  • 1970-01-01
  • 2018-05-28
  • 2021-12-21
  • 2018-11-19
  • 2016-12-03
  • 2020-06-10
相关资源
最近更新 更多