1

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
...
4

1 に答える 1