【问题标题】:How to delete an Item from JSON Object using nodeJS?如何使用 nodeJS 从 JSON 对象中删除项目?
【发布时间】:2019-01-29 15:35:47
【问题描述】:

我正在使用节点 v8.11,无法从创建并从 mongoDB 中返回新对象的对象中删除项目。

创建后的示例响应:

{
    "name": "",
    "device": "",
    "session":"",
    "_id": "5b7e78c3cc7bca3867bbd1c9",
    "createdAt": "2018-08-23T09:05:07.134Z",
    "updatedAt": "2018-08-23T09:05:07.134Z",
    "__v": 0
}

尝试从响应中删除“_id”,如下所示:

tokens.create(req.body).then(function(session){
     delete session._id;
     return res.send(session); // _id still exist
});

我看到删除在 ES6 中已被弃用,这是案例问题吗? 如何使用 key 在一行中删除一个项目?

【问题讨论】:

  • Mongoose 返回 bson 类型,因此您需要将其转换为纯 javascript 对象。那么delete 可能会起作用!!
  • @DevangNaghera 正是我在答案中提到的。这就是 OP 所需要的
  • @DevangNaghera - 是的,我明白了。 +1

标签: javascript node.js mongodb express


【解决方案1】:

使用destructuringrest

var res = {
    "name": "",
    "device": "",
    "session":"",
    "_id": "5b7e78c3cc7bca3867bbd1c9",
    "createdAt": "2018-08-23T09:05:07.134Z",
    "updatedAt": "2018-08-23T09:05:07.134Z",
    "__v": 0
};

var { _id, ...ret } = res ;

console.log(ret);

【讨论】:

    【解决方案2】:

    当您使用 mongoose 模型创建对象时,它将返回一个模型对象而不是普通的 javascript 对象。因此,当您执行delete session._id; 时,它不会起作用,因为session 是一个模型对象,它不允许直接更改模型对象的属性。

    您需要使用模型对象的toJSON()toObject() 方法将模型对象更改为纯JS 对象并删除其属性:

    tokens.create(req.body).then(function(session) {
      var sessionObj = session.toJSON();
      delete sessionObj._id;
      return res.send(sessionObj);
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-12-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-10
      相关资源
      最近更新 更多