2016-08-20 15 views
0

をクライアント側で最新のデータを取得し、私は流星にサーバーコードをMongoDBのコレクションを作成しました:流星のアプリでサーバーから

//Server 
Restaurants = new Mongo.Collection('restaurants') 
if (Meteor.isServer) { 
    //This code only runs on the server 
    Meteor.publish('restaurants', function() { 
    return Restaurants.find(); 
    }); 
} 

私はデータ変更するたびに、クライアント側での最新のデータを取得しようとしていますデータベース。

これは私のクライアント側のコードです:

//Client 
Restaurants = new Mongo.Collection('restaurants'); 
var myData = ""; 

if (Meteor.isClient) { 

    Meteor.subscribe('restaurants');   
    myData = Restaurants.find(); 
}; 

はあなたに感謝します!

+1

問題は何ですか?あなたは流星ガイドを読んだことがありますか?トラッカーのような感じです。それについて読む。 – MasterAM

+0

多くのありがとうmasterAM..works :) – David

答えて

1

Trackerがどのように機能するかを示すコードを使用した簡単な改訂例です。

Restaurants = new Mongo.Collection('restaurants') 

if (Meteor.isClient) { 
    Meteor.subscribe('restaurants'); 
    Tracker.autorun(() => { 
    const restaurant = Restaurants.findOne(); 
    console.log(restaurant); 
    }); 
}; 

if (Meteor.isServer) { 
    Meteor.publish('restaurants', function restaurants() { 
    return Restaurants.find(); 
    }); 

    Meteor.startup(() => { 
    if (Restaurants.find().count() === 0) { 
     Restaurants.insert({ 
     name: 'McDonalds', 
     }); 
    } 
    }); 
} 

Restaurants.findOneが最初に呼び出されたとき、何のレストランデータがまだクライアントにプッシュされていないので、上記の最初のコンソールにundefinedを記録します。検索結果をTracker.autorunにラップすると、レストランデータがクライアントにプッシュされると、検索が再実行され、ロードされたレストランがコンソールに記録されます。コンソールの出力は次のようになります:

undefined 
Object {_id: "HAJpQxfq59KPmTwDA", name: "McDonalds"} 
+0

ありがとうhwillson :) – David

関連する問題