0

クライアントで実行されている coffeescript にテンプレート関数があります。

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()

starredbxSbMgszYxbCqDonFstarredPages 配列の_id値がコレクション配列の値と一致する場合でも、空の配列として返されますEntries.docs

starredPagesこれはなぜですか、また、配列と_id's の間の一致を返すようにする方法は?

4

1 に答える 1

1

使用する必要があります$in

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

単純なタイプミス;)

于 2013-04-20T19:52:16.213 に答える