簡體   English   中英

在Node.js中刪除參數對象的屬性

[英]Deleting property of a argument object in nodejs

似乎我無法從Node.js中的另一個Promise從對象參數中刪除屬性

說我寫

Person.save().exec().then(function(err, object){

  create(object) // Lets assume object looks like -> {person : "don"};
})

create: function(object){
  delete object.person;
  console.log(object) // It still has this name property

}
However, If I do a deep copy inside of nodejs code's create call it deleted that property.

相反,如果我寫類似

function a(){ let abc = { person: "don"}; xyz(abc)}
function xyz(param){
 delete param.person;
 console.log(param); ... It logs an empty object. 
}
a()

它可以完成技巧而無需執行深層復制。 這是什么原因呢?

我想說這是由於MongoDB / Mongoose(看起來像您正在使用)對象的工作方式造成的。

您可以通過調用.toObject()將Mongoose對象轉換為常規JS對象。 因此,例如:

Person.save().exec().then(function(err, person){

  delete person.name; // won't work

  var newPerson = person.toObject(); // newPerson is now a regular JS object
  delete newPerson.name; // should work
  console.log(newPerson.name); // should return undefined
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM