2014-04-28 19 views
15

Khi người dùng đăng ký với API của tôi, họ được trả về một đối tượng người dùng. Trước khi trả về đối tượng, tôi loại bỏ mật khẩu băm và các thuộc tính muối. Tôi phải sử dụngTại sao tôi không thể xóa thuộc tính đối tượng của mô hình mongoose?

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

Bởi vì khi tôi cố gắng

delete user.salt; 
delete user.pass; 

các thuộc tính đối tượng vẫn còn tồn tại và được trả về.

Tại sao lại như vậy?

Trả lời

21

Để sử dụng delete bạn sẽ cần phải chuyển đổi các tài liệu mô hình thành một đồng bằng JavaScript đối tượng bằng cách gọi toObject nên bạn có thể tự do thao tác:

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

Thuộc tính không thể định cấu hình không thể được định cấu hình lại hoặc bị xóa.

Bạn nên sử dụng chế độ nghiêm ngặt để bạn có được những sai sót trong khuôn mặt của bạn thay vì những thất bại im lặng:

(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

Tôi đã ở chế độ nghiêm ngặt, nhưng không có gì ngăn cản tôi tôi không thể làm điều đó. @JohnnyHK đã lưu ngày của tôi –

Các vấn đề liên quan