流星响应式发布来自不同集合的数据



我尝试用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采集将有来自所有传感器的反应数据。

希望对你有帮助。

最新更新