2012-10-25 10 views
7

Mam aplikację NodeJS z Mongoose ODM. Chcę wybrać trzy konkretne pola z kolekcji. Przykład mojej kolekcji to "Użytkownicy" posiadający pola "_id", "nazwa użytkownika", "e-mail", "typ użytkownika", "hasło" ... Chcę wybrać tylko "nazwa użytkownika", "e-mail" & "typ użytkownika". To mój kodWybieranie poszczególnych pól w MongooseJs

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

To działa dobrze z mangusta 2 wersji, mam zaktualizowany do MongoDB 2.2 i Mongoose 3.3.1. Teraz dostaję błąd

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

Czy ktoś może zaproponować rozwiązanie?

Odpowiedz

13

Od mangusta 3 select() parametr może być:

  • obiekt zawierający 0-1 mapę wykluczonych/dziedzinach objętych
  • przestrzeń rozdzielany ciąg fieldnames (z - przed polami, które muszą być wyłączone)

należy więc albo zastosowanie:

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

lub

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

Dziękujemy! Oba kody działają dobrze. – dany

10

Od Mongoose wersji 4, nie trzeba select().

var query = models.User.find({}, 'UserName Email UserType'); 
Powiązane problemy