2012-10-25 28 views
7

Tôi có ứng dụng NodeJS với Mongoose ODM. Tôi muốn chọn ba trường cụ thể từ một bộ sưu tập. Ví dụ bộ sưu tập của tôi là "Người dùng" có các trường '_id', 'tên người dùng', 'email', 'loại người dùng', 'mật khẩu' ... Tôi muốn chỉ chọn 'tên người dùng', 'email' & 'loại người dùng'. Đây là mã của tôiChọn các trường cụ thể trong MongooseJs

var query = models.User.find({}).select('UserName', 'Email', 'UserType'); 

này đã làm việc tốt với mongoose 2 phiên bản, tôi cập nhật để MongoDB 2.2 và Mongoose 3.3.1. Hiện tại, tôi đang gặp lỗi

500 TypeError: Invalid select() argument. Must be a string or object. 

Mọi người có thể đề xuất giải pháp không?

Trả lời

13

Kể từ cầy mangut 3 select() tham số có thể là:

  • một đối tượng chứa đồ 0-1 của loại trừ/lĩnh vực bao gồm
  • một không gian giới hạn chuỗi các fieldnames (với - trước khi lĩnh vực mà cần phải được loại trừ)

Vì vậy, bạn nên sử dụng một trong hai:

var query = models.User.find({}).select('UserName Email UserType'); 

hoặc

var query = models.User.find({}).select({UserName : 1, Email : 1, UserType: 1}); 
+0

Cảm ơn bạn! Cả hai mã đều hoạt động tốt. – dany

10

Kể từ phiên bản Mongoose 4, bạn không cần chọn().

var query = models.User.find({}, 'UserName Email UserType'); 
Các vấn đề liên quan