0

問題: Flow-Router + React を使用して、React コンポーネント内でサブスクライブしているユーザーのフォロワーを取得できません

Meteor、Flow-Router、React を使用しています。フォロワーを購読しようとしていますが、アプリを実行すると常に空になります。何が悪いのかわかりません。

私はこのアプローチに従います: Arunoda による React Component 内でのサブスクライブ

mongo シェルでクエリを確認すると、動作します: (つまり、_id が「5MJJPc78W3ipXpWzy」である Alice のフォロワー (1 ユーザー、Bob) を返します)

meteor:PRIMARY> db.users.find({followings: "5MJJPc78W3ipXpWzy"}).pretty()
{
  "_id" : "v2Kikp8Wa5FSJi64b",
  "createdAt" : ISODate("2015-12-11T11:08:50.209Z"),
  "services" : {
    "password" : {
      "bcrypt" : "$2a$10$IzfXjbXlYw4BuTMLroSjaOmgqnj8Z9sWXc4uyvHuXurirWRgDcZJ2"
    },
    "resume" : {
      "loginTokens" : [
        {
          "when" : ISODate("2015-12-11T11:08:50.213Z"),
          "hashedToken" : "jN0jeZX6PYFAy6b1eHvwWvbMhiVtbF1cjFySPnTpQTQ="
        }
      ]
    }
  },
  "username" : "bob",
  "followings" : [
    "5MJJPc78W3ipXpWzy"
  ]
}

y コードは次のとおりです。

ライブラリ/ルーター

FlowRouter.route('/users/:userid/followers', {
  name: 'followers',
  action(params) {
    ReactLayout.render(MainLayout, {
      content: <FollowersBox {...params}/>
    });
  }
});

サーバー/出版物

Meteor.publish('followers', (userId)=> {
  check(userId, String);
  Meteor.users.find({followings: userId});
});

クライアント/コンポーネント/プロファイル/FollowersBox

FollowersBox = React.createClass({
  mixins: [ReactMeteorData],

  getMeteorData() {
    let data = {};
    let followersSubs = Meteor.subscribe('followers', this.props.userid); // Always empty!

    if(followersSubs.ready()) { // Never be ready
      data.followers = Meteor.users.find({followings: this.props.userid}).fetch();
    }
    return data;
  },

  render(){
    let followersList = "";
    if(this.data.followers){
      followersList = this.data.followers.map((user)=> {
        return <UserItem
              key={user._id}
              userId={user._id}
              username={user.username}
              />
      });
    } 

    return (
      <div>
        <h4>Followers</h4>
        <ul>
          {followersList}
        </ul>
      </div>
    )
  }
});

完全なリポジトリ https://github.com/yhagio/MeteorReactTwitter

4

1 に答える 1