Nodejs 从 object 中删除字段或 属性

Nodejs Delete fields or property from an object

通常在 Javascript 我们做 -

var someObj = {};
someObj.name="somename";
delete someObj.name;

但是在 NodeJS 中什么是删除的正确方法 Object field/property.

Use Case :In your NodeJs Rest API e.g. Express server Rest API - You have received 20 header fields and internally you have to call another service which only need 18 (out of 20) headers. You can create totally new header object and set each of them by your code /loop etc. One approach is create a shallow copy of existing/incoming header object and remove/delete extra 2 fields.

我已经尝试了上面的示例代码并且它工作正常但不确定这是推荐的方法还是 NodeJs 本身提供的方法。

headers的更多示例 您的快递服务器 req.headers

let headers=req.headers;
//assuming it has content-type:"application/json" , uuid:"some-test-uuid"
delete headers.uuid 
//now after delete it has content-type:"application/json" only

如果您当前的代码不会导致您在实际连接负载中看到的任何问题,那么它可能完全没问题。

如果您必须处理 很多很多 请求,一个潜在的问题是 delete 可能很慢 in some engines - 并且 Node 运行 V8。如果您

,您可能会发现性能略有提高
  • 设置您不需要的属性 undefinednull,而不实际从对象中删除它们(确保服务可以处理这种格式),或者

  • 使用对象剩余语法来收集您确实需要的属性,例如:

    function handleRequest(someObjWithLotsOfProperties) {
      const { name, userId, ...rest } = someObjWithLotsOfProperties;
      callOtherAPI(rest);
    }
    

    使用除 nameuserId 以外的所有属性调用另一个 API。

如果当前方法明显有问题,可以考虑这些选项。