2016-08-03 6 views
0

私はmongoコレクションクエリを利用している2つの流星関数を持っています。

course_list関数は正しく動作し、CoursesコレクションからCourseオブジェクトのリストを返します。しかし、studentsInCourse関数はuserIdArrayを記録するときに配列を正しく出力しますが、userArrayには1つのユーザーオブジェクトしか配置されません。これは、userIdArrayの最後のオブジェクトの_idに対応します。これらの機能は私と同じように見えます。なぜ彼らが異なって戻ってくるのか分かりません。流星のAPIのドキュメントのMeteor.usersセクションから撮影

答えて

1

:すべてMongo.Collectionsよう

は、サーバー上のすべての文書にアクセスすることができますが、唯一特にサーバによって発行されたものは、クライアント上で利用可能です。

あなたはログインしていると、デフォルトMeteor.users.find()でのみ(これはセキュリティ機能でユーザの詳細にあなたのログインを返しますクライアント側から次

Meteor.users.find({ 
    _id: { 
    $in: userIdArray 
    } 
}).map((c) => { return c }); 

を呼び出している場合 - あなたは「wouldn人々がすべてのユーザーのリストを取得できるようにします)。したがって、カーソルは多くても1人のユーザーを参照します。ログインしたユーザー_iduserIdArrayにある場合、関連付けられたmap関数をそのユーザーのみで実行します。そのため、1つのユーザーオブジェクトのみが返されます。

これをクライアント側のすべてのユーザーに対して実行する場合は、クライアントに必要なユーザーデータを送信するための独自のサブスクリプション/パブリケーションを設定することを検討する必要があります(または、メテオメソッド同様のことを達成するには、一致するすべてのユーザーを見つけて返すメソッドを作成することができます)。

+0

これはまさに起こっていることです。その抜粋をありがとう! –

関連する問題