2017-03-28 14 views
0

私はこれでレンガの壁に頭を打っています。私のために働く例を見つけることができないようです。流星のパブリッシュ/ユーザーデータの購読

これは私のサーバー側

Meteor.publish("allUserData", function() { 
    return Meteor.users.find({}, {fields: {'username': 1, 'profile': 1}}); 
}, 
{is_auto: true}); 

であり、これは私が「準備」のログを取得しますが、返されたデータを反復処理する方法を見ることができない

var allUserData = Meteor.subscribe("allUserData"); 
Tracker.autorun(function() { 
    if (allUserData.ready()) { 
     console.log('ready'); 
    } 
}); 

私のクライアントである???

答えて

0

を、あなたは小道具を設定することができますcreateContainer()を使用してコンポーネントに追加します。例えば

import React, {Component} from 'react'; 
import {createContainer} from 'meteor/react-meteor-data'; 

class FooComponent extends Component { 
    constructor(props) { 
     super(props); 
    } 

    render() { 
     if (this.props.loading) { 
      return (
       <div>Loading</div> 
      ) 
     } 

     return (
{ 
        this.props.users.map(function(user, index) { 
         return (
          <div key={index.toString()}> 
           {user.username} 
          </div> 
         ) 
        }, this) 
       } 
     ) 
    } 
} 

export default createContainer(() => { 
    let handle = Meteor.subscribe('allUserData'); 

    let users = Meteor.users.find({}); 

    let loading = !handle.ready(); 

    return { 
     users, 
     loading 
    } 
}, FooComponent); 

これはテストしていませんが、正しくない場合は少なくとも近いと思います。もし私が何か間違っていたら、私のリアクションスキルはまだかなり新しいです。

+0

ありがとうございました。現在はテストする立場ではありませんが、初心者のためにcreateContainerの要素が欠けていました。新しいものも流星も反応します:0 – slip0000

+0

あなたの答えが十分ではないと反論することはできません。 – slip0000

+0

あなたの解決策が働いた - createContainerがキーでした - ありがとうございました – slip0000

1

データをどのように反復処理したいのかわかりません。 「標準」の方法は、加入コレクションにカーソルを返すヘルパーとブレイズにループしている:

HTML:

{{#each user in users}} 
    {{user.username}} 
{{/each}} 

JS:リアクトため

Template.foo.onCreated(function() { 
    this.subscribe('allUserData'); 
}); 

Template.foo.helpers({ 
    users() { 
     return Meteor.users.find({}); 
    } 
}); 
+0

私は反応コンポーネントにあります - 返されたデータを使用して状態を設定します.....応答に感謝します! – slip0000

+0

心配する必要はありません。 Reactを示すためにあなたのタイトルとタグを更新する必要があります。おそらくもっと気付くでしょう。 – zim