MongoDB
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> MongoDB

Tại sao hasOwnProperty của mô hình mongoose trả về false khi thuộc tính tồn tại?

Đó là vì đối tượng tài liệu bạn lấy lại từ mongoose không truy cập trực tiếp vào các thuộc tính. Nó sử dụng chuỗi nguyên mẫu do đó hasOwnProperty trả về false (tôi đang đơn giản hóa điều này rất nhiều).

Bạn có thể thực hiện một trong hai điều sau:sử dụng toObject() để chuyển đổi nó thành một đối tượng thuần túy và sau đó séc của bạn sẽ hoạt động như cũ:

var userPOJO = User.toObject();
if ( !(userPOJO.hasOwnProperty('local') && userPOJO.local.hasOwnProperty('password')) ) {...}

HOẶC bạn chỉ có thể kiểm tra các giá trị trực tiếp:

if ( !(User.local && User.local.password) ) {...}

Vì không thuộc tính nào có thể có giá trị giả nên nó sẽ hoạt động để kiểm tra nếu chúng được điền.

CHỈNH SỬA:Một kiểm tra khác mà tôi quên đề cập là sử dụng get tích hợp sẵn của Mongoose phương pháp:

if (!User.get('local.password')) {...}


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Lập lịch bảo trì Windows đơn giản trên các cụm cơ sở dữ liệu của bạn

  2. Mẹo quản lý sao lưu MongoDB cho các cụm bị chia nhỏ

  3. Tại sao MongoDB lại chiếm quá nhiều dung lượng?

  4. Mongoose, sắp xếp truy vấn theo trường phổ biến

  5. Tôi có cần phải đóng kết nối một cách rõ ràng không?