私Questions
は、質問> libにあるファイル「collections.js」でSimpleSchemaを使用して定義したコレクションを持っています。
このコレクションにはaskedBy
フィールドがあります。これは、質問をした人の userId を格納する文字列の配列です。
askedBy: {
type: [String],
optional: true
},
別のファイル、質問 > サーバー > publish.js には、次のものがあります。
Meteor.publish("questions", function () {
questionList = Questions.find(
{},
{
fields: {
"_id": 1,
"questiontext": 1,
"createdAt": 1,
"askedBy": 1,
"slug": 1
}
}
);
return questionList;
});
私の目的は、質問をしたユーザーの名前、つまり「askedBy」配列の ID に対応するユーザーのユーザー名を利用できるようにすることです。
どうすればいいですか?
私がこれまでに試したこと:
collections.js で:
Questions.helpers({
askedByUsers: function() {
console.log("askedBy:");
console.log(Meteor.users.findOne(this.askedBy[0]));
return Meteor.users.findOne(this.askedBy[0]);
},
Meteor.users
現在ログインしているユーザーの詳細にしかアクセスできないように見えるため、これは失敗します。他のユーザーからのすべての質問に対して、null 値が返されます。
それで、これをpublish.jsに追加しようとしました:
Meteor.publish("allUsers", function () {
return Meteor.users.find({},
{
"name": 1,
});
});
collections.jsとMeteor.subscribe("allUsers");
question.js の両方 (テンプレート ヘルパーとイベント ハンドラーがすべて含まれています)。また、コレクション ヘルパーを次のように変更しました。
Questions.helpers({
askedByUsers: function() {
console.log("askedBy:");
console.log(allUsers.findOne(this.askedBy[0]));
return allUsers.findOne(this.askedBy[0]);
},
しかし、それでもうまくいきません。
ログインしていないユーザーのユーザー名を取得するにはどうすればよいですか?
編集:これが重要な場合に備えて-フォルダー構造
├── client
├── modules
│ ├── admin
└── questions
├── client
│ ├── questions.html
│ └── questions.js
├── lib
│ ├── collections.js
│ └── methods.js
└── server
└── publish.js
...