【问题标题】:How to edit (add or remove field) return JSON using nodejs mongodb如何使用nodejs mongodb编辑(添加或删除字段)返回JSON
【发布时间】:2021-04-30 13:13:23
【问题描述】:

我想编辑我的返回 json,比如添加或删除一些字段... 这是我的代码

return await Ledgers.find(queryObj)

输出(响应)看起来像......

{        
        "masterId": 0,
        "deducteeType": null,
        "parentGuid": "4eb25490-8288-4841-a925-ed2512ad6d7b-00000014",
}

我想在 json 中再添加一个字段并想删除现有的...

【问题讨论】:

  • 您可以像{ deducteeType : -1} 这样设置从查询中返回的字段,这意味着不返回该字段。 1 表示从查询中返回该字段。如果要修改查询返回的对象,只需创建一个JS对象,然后使用delete运算符删除字段,returnedObject.newField = value添加新字段
  • var r = Ledgers.find(queryObj).toObject(); r.Name = '测试';它给出的错误:找不到数据。 TypeError: Ledgers.find(...).toObject 不是函数
  • 我认为您不需要使用toObject。我认为find 返回一个对象数组。 findOne 如果存在具有给定条件的对象,则返回单个对象。加上@ApoorvaChikara 给出了一个有效的答案。

标签: node.js mongodb


【解决方案1】:

要从对象中删除key,您可以像这样使用删除运算符:

const obj = {name :'name 1', key: 'key 1'};
delete obj.name;
console.log(obj);

而当你说要添加一些东西时,你可以简单地添加键:

 const obj = {name: 'name 1'};
 obj['key'] = 'key 1';
 console.log(obj);

对于您的示例,将返回数据分配给变量并进行更改。

const resp = await Ledgers.find(queryObj);
resp['key'] = 'key 1'

另外,如果你想使用 mongodb 制作,你可以像这样使用投影:

const resp = await Ledgers.find({queryObj}, { deducteeType: 1, parentGuid: 1, _id: 0});
delete resp['parentGuid'];
resp['test'] = test;
console.log(resp);

这只会从查找查询返回命名属性,除了_id。查看更多details

【讨论】:

  • 顺便说一句,我是 nodejs 的初学者,这是我的代码 const obj = Ledgers.find(queryObj);;删除 obj.masterId;控制台.log(obj);但是 json 响应中的 masterId 仍然存在
  • 你能分享一下你是怎么做的代码吗?
  • 'const obj = Ledgers.find(queryObj);删除 obj.masterId; console.log(obj);'
  • 你做错了,查找查询返回的是承诺而不是对象。尝试做 - const obj = await Ledgers.find(queryObj): 并在 obj 上运行 delete。
  • 你能分享一下例子吗
猜你喜欢
  • 2021-10-16
  • 2020-05-09
  • 1970-01-01
  • 2019-08-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-10
  • 2018-05-14
相关资源
最近更新 更多