更改所有客户的Meteor集合订阅

时间:2015-07-24 15:42:12

标签: javascript meteor meteor-publications meteor-collections

我正在开发一个webapp,我需要一个与 admin 相关联的客户端来触发事件(例如,在下拉列表中选择的新值)将告诉所有其他连接的客户端更改订阅,可能使用参数,即新选择的值。

的内容



Template.bid.events
  "change .roles": (e, tpl) ->
    e.preventDefault()
    role = tpl.$("select[name='role']").val()
    Meteor.subscribe role




当然这仅适用于当前的客户 我认为的一种方法是保留一个单独的集合,指向要使用的当前集合,以便客户端可以以编程方式对其进行操作。你觉得很麻烦。

是否有流星作用来实现这一目标?
感谢

2 个答案:

答案 0 :(得分:1)

在meteor中,只要您遇到类似问题:"我需要跨客户端同步数据",您应该使用集合。我发现发送一个数据似乎有点过分,但我向你保证,它目前是阻力最小的路径。

有些方法可以揭示实际上不会写入mongo的伪集合,但对于你的用例来说,真的听起来有点过分 - new Mongo.Collection是可行的方法。

答案 1 :(得分:0)

您可以使用流在连接的客户端和服务器之间建立简单的通信线路。它不会在MongoDB中存储数据。只需让所有连接的客户端收听流并在新消息带有订阅名称时切换订阅。确保只有与您的管理员相关联的客户端才能将消息推送到流中。

可用套餐:https://atmospherejs.com/lepozepo/streams

示例:http://arunoda.github.io/meteor-streams/