Scheint, wie ich nicht eine Eigenschaft von einem Objekt param aus einem anderen Versprechen in NodeJSLöschen Eigenschaft eines Argument Objekt in NodeJS
ich
schreiben Say löschenPerson.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.
Dann, im Gegenteil, wenn ich schreibe etwas wie
function a(){ let abc = { person: "don"}; xyz(abc)}
function xyz(param){
delete param.person;
console.log(param); ... It logs an empty object.
}
a()
Es macht den Trick, ohne eine tiefe Kopie durchzuführen. Was ist der Grund dafür?
Es gibt zu wenig Code hier für uns zu sehen, was genau vor sich geht. Das Hinzufügen von benutzerdefinierten Eigenschaften zu Versprechungen ist im Allgemeinen eine schlechte Sache, weil Versprechungen oft angekettet sind (neue Versprechungen, die ständig von alten erstellt werden, so dass es schwierig ist, das gleiche Objekt zu behalten). Außerdem wird 'create (object)' keine Methode wie Ihre Show für die 'create: function()' Definition aufrufen. Und '' save.then (function (err, object) {'ist nicht die Signatur eines' .then() 'Handlers auf einem echten Versprechen.' .then() 'Handler werden nur ein einziges Argument übergeben. – jfriend00
Ja Ich schreibe den exakten Code – kushalvm
Beachten Sie, dass '.name' ein reservierter Eigenschaftenname für einige Arten von Objekten (wie Funktionsobjekte) ist und eine Standardkonfiguration hat, die es nicht erlaubt, sie zu ändern. – jfriend00