2016-11-13 3 views
0

私は流星でホームオートメーションシステムを構築しようとしています。したがって、私は次のことをしたいと思います。メテオ反応性の異なるコレクションからのデータの公開

私はあらゆる種類のソースから読んでいる私の異なるliveValuesを持つコレクションを持っています。各文書は、例えば実際の値を有するセンサの値である。

今、私は物という2番目のコレクションを作成したいと思います。このコレクションでは、この事のためのデータを使って、例えば「部屋温度」のようなすべての「もの」を追加したいと思います。 1つの属性はliveValuesのいずれかへの接続である必要があります。

私はMeteor the Thingコレクションを公開して購読したいと思っています。なぜならwebinterfaceでは、liveValueが何の背後にあるかは関係ありません。

ここでは、私のオプションで、複雑な部分が始まります。

データをクライアントに公開するにはどうすればよいのですか?LiveValueに問題がある場合、私は反応的な更新を行いますか?これは "Thing"コレクションとは異なるコレクションです。

私の考えでは、1つのサブスクリプションで1つの「もの」ドキュメントを作成したいと思っています。このサブスクリプションでliveValueコレクションのliveValueのアップデートが返されます。

これは実行可能ですか?

誰かがこれをどのように処理できるのか考えていますか?

meteor-reactive-publishについて聞いたことがありますが、これが解決策であるかどうかはわかりません。また、私はこれがサーバーのために多くの力を必要としていると聞いてきました。

ご協力いただきありがとうございます。

+0

[reywood:publish-composite](https://atmospherejs.com/reywood/publish-composite)パッケージを見ましたか?これはかなり標準的な使用例です。 –

答えて

0

したがって、基本的に、サーバー側のドキュメントをクライアント側の1つのリアクティブ・コレクションにマージしたいとします。

docsに記載されているように、Meteor Collectionsが提供するobserveChangesを使用する必要があります。これにより

あなたは、サーバー側のコレクションの変化を観察し、このようなあなたのクライアント側集約コレクションに公開することができます:thingsコレクションは反動すべてのセンサからのデータを持つことになります。これにより

// Get the data from a kind of sensor 
var cursor = SomeSensor.find({/* your query */}); 

var self = this; 

// Observe the changes in the cursor and publish 
// it to the 'things' collection in client 
var observer = cursor.observeChanges({ 
    added: function (document) { 
    self.added('things', document._id, document); 
    }, 
    removed: function (document) { 
    self.removed('things', document._id, document); 
    }, 
    changed: function (document) { 
    self.changed('things', document._id, document); 
    } 
}); 

// Make the publication ready 
self.ready(); 

// Stop the observer on subscription stop 
self.onStop(function() { 
    observer.stop(); 
}); 

お手伝いします。

+0

こんにちは。あなたのコードで、Thingコレクションを観察してください。しかし、私はliveValueコレクション/ドキュメントを観察したい。 – Michael

+0

もし私が見ているカーソルは 'SomeSensor'コレクション、つまりあなたのliveValueコレクションからのものです。 これは 'cursor = liveValue.find(') 'と似ています。 'liveValue'コレクションを見て、それを' things'コレクションに反応的にプッシュしています – tbking

+0

このパッケージについてどう思いますか? [meteor-publish-composite](https://github.com/englue/meteor-publish-composite)。私はこれがまさに私が探しているものだと思います。か否か? – Michael

関連する問題