我尝试用流星建立一个家庭自动化系统。因此我想做以下事情。
我有一个包含我所有不同liveValues的集合,我正在从任何来源阅读。每个文档都是例如具有实际值的传感器的值。
现在我想创建一个名为thing的第二个集合。在这个集合中,我想添加我所有的“东西”,例如“Roomtemperature living”和这个东西的数据。一个属性应该是与一个liveValues的连接。
现在我想发布和订阅Meteor the Thing集合,因为在Web界面上,什么liveValue背后的东西并不重要。
在这里,在我的选项中,复杂的部分开始了。
如何将数据发布到客户端,当LiveValue有更改内容时,我会有一个响应式更新?因为它是一个不同于“Thing”系列的收藏品。
在我的想法中,我想通过一个子文件到一个“事物”文档来做这件事,我将使用此订阅返回liveValue集合的liveValue的更新。
这可行吗?
有人知道我该如何处理这个问题?
我听说过meteor-reactive-publish,但我不确定这是否是解决方案。我也听说这需要服务器的大量电源。
感谢您的帮助。
答案 0 :(得分:0)
所以基本上你想把服务器端的文件合并到客户端的一个反应集合中。
您应该使用Meteor Collections提供的observeChanges
,如docs中所述。
通过这种方式,您可以观察服务器端集合的更改并发布到客户端聚合集合,如下所示:
// 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
集合将反复使用所有传感器的数据。
希望它对你有所帮助。