2013-04-20 6 views
0

У меня есть шаблон функции в CoffeeScript работает на клиенте:MongoDB в операторной вернуться на пустой массив, когда он не должен

Template.leftNav.starred =() -> 
    user = Meteor.user() 
    if ! user 
     return 
    else 
     starredPages = user.profile.starredPages 
     starred = Entries.find({ _id :{in: starredPages}}).fetch() 

Meteor.user() возвращается

Object {_id: "AHSwfYgeGmur9oHzu", profile: Object} 
    _id: "AHSwfYgeGmur9oHzu" 
    profile: Object 
    starredPages: Array[4] 
    0: "asdasdasdasdasd" 
    1: "abc123" 
    2: "blobby" 
    3: "bxSbMgszYxbCqDonF" 

и Meteor Entries.find({}) возвращается:

Entries 
    Meteor.Collection {_makeNewID: function, _transform: null, _manager: Meteor._LivedataConnection, _collection: LocalCollection, _name: "entries"…} 
    _collection: LocalCollection 
    _savedOriginals: null 
    docs: Object 
     Wkxxpapm8bbiq59ig: 
      _id: "M3vDJNMZJjBDfrc7D" 
     bxSbMgszYxbCqDonF: 
      _id: "bxSbMgszYxbCqDonF" 

Выполнение кода в функции шаблона:

starredPages = user.profile.starredPages 
starred = Entries.find({ _id :{in: starredPages}}).fetch() 

starred возвращается как пустой массив, даже если значение bxSbMgszYxbCqDonF в массиве starredPages соответствует значению _id в массиве Entries.docs коллекции.

Почему это и как заставить его возвращать совпадения между массивом starredPages и _id?

ответ

1

Вы должны использовать $in

starred = Entries.find({ _id :{$in: starredPages}}).fetch() 

Простой опечатка;)

+1

FACE = пальмовых спасибо! – funkyeah

Смежные вопросы