2014-04-28 12 views
15

Gdy użytkownik zarejestruje się przy użyciu mojego interfejsu API, zostanie mu zwrócony obiekt użytkownika. Przed zwróceniem obiektu usuwam zakodowane hasło i właściwości soli. Muszę używaćDlaczego nie mogę usunąć właściwości obiektu modelu mongoose?

user.salt = undefined; 
user.pass = undefined; 

Bo gdy próbuję

delete user.salt; 
delete user.pass; 

właściwości obiektów nadal istnieją i są zwracane.

Dlaczego tak jest?

Odpowiedz

21

Aby korzystać delete będzie trzeba konwertować dokument modelu na równinie JavaScript Object przez wywołanie toObject tak możesz dowolnie nim manipulować:

user = user.toObject(); 
delete user.salt; 
delete user.pass; 
3

Nie można konfigurować ani usuwać właściwości innych niż konfigurowalne.

Należy użyć trybu ścisłego więc masz in-your-face błędy zamiast cichych niepowodzeń:

(function() { 
    "use strict"; 
    var o = {}; 
    Object.defineProperty(o, "key", { 
     value: "value", 
     configurable: false, 
     writable: true, 
     enumerable: true 
    }); 
    delete o.key; 
})() 
// TypeError: Cannot delete property 'key' of #<Object> 
+0

Byłem w trybie ścisłym, ale nic mi nie przeszkodziło, że nie mogłem tego zrobić. @JohnnyHK uratował mój dzień –

Powiązane problemy