2016-07-31 10 views
0

ユーザーのリストを公開しようとしています。私はaccoutActive: trueのコレクションをチェックしてから、studentUserIdを取得しています。私はそれを使用してmeteor.userを見つけることができると思ったが、何も返さない。誰かが私に行方不明を教えてもらえますか?Meteorが正しいユーザーを公開していません

Meteor.publish('list', function() { 
    var activeStudent = StudentAccountStatus.find(
          {"accountActive": true}, 
          {fields: 
          {"studentUserId": 1} 
          } 
         ).fetch(); 

    return Meteor.users.find(
        {_id: activeStudent} 
       ); 
}); 
+0

なぜ最初のクエリを直接返すのかわかりません。 .fetch()を削除して、公開機能でMongoカーソルを返す必要があります。 –

+0

'activeStudent'にはオブジェクトの配列が割り当てられます。関連する文字列(または文字列の配列)を復元し、 '$ in'セレクタを使用する必要があります。結果は反応的ではなく(追加の「アクティブな」アカウントは公開されないという意味で)、使用しているユーザーフィールドについては非常に注意してください。 – MasterAM

答えて

1

現在お使いのactiveStudent変数はこのようになりますオブジェクトの配列が含まれています

[ { _id: 'a104259adsjf' }, 
    { _id: 'eawor7u98faj' }, 
... ] 

あなたのmongoクエリのためにあなただけの文字列の配列、すなわち['a104259adsjf', 'eawor7u98faj', ...]を必要とするのに対し。

だから、あなたはlodashの_.map機能と同じように、文字列の配列を構築するために、オブジェクトのあなたの配列を反復処理する必要があります。

var activeStudentIds = _.map(activeStudent, function(obj) { 
    return obj._id; 
}); 

その後、セレクタ内のmongo $を使用して、あなたを定式ことができます問い合わせ先:

return Meteor.users.find(
    {_id: { $in: activeStudentIds } } 
); 
関連する問題