我尝试用meteor构建一个家庭自动化系统。因此,我想做以下的事情。
我有一个集合与我所有不同的livevalvalues我从任何类型的来源阅读。每个文档都是一个具有实际值的传感器的值。
现在我想创建第二个集合,名为thing。在这个集合中,我想添加我所有的"东西",例如"室温生活"与这个东西的数据。一个属性应该是连接到一个livevalue。
现在我想发布和订阅Meteor的Thing集合,因为在web界面上,不管liveValue是什么都没关系。
在这里,在我的选择,复杂的部分开始。
我怎么能发布数据到客户端,我将有一个反应性更新当LiveValue已经改变了的东西?因为它是一个不同于"Thing"的集合
在我的想法中,我想通过订阅一个"东西"文档来做到这一点,并且我将通过此订阅获得liveValue集合的liveValue的更新。
这可行吗?
有人知道我该怎么处理这个吗?
我听说过一些关于流星反应发布,但我不确定这是否是解决方案。我还听说这需要大量的服务器电源。
谢谢你的帮助。
所以基本上你想把服务器端的文档合并到客户端的一个响应集合。
您应该使用流星集合提供的observeChanges
,如文档中所述。
这样,您可以观察服务器端集合上的更改,并将其发布到客户端聚合集合,如下所示:
// 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();
});
这样,things
采集将有来自所有传感器的反应数据。
希望对你有帮助。