Meteor:更新集合时未触发Deps.autorun

时间:2013-04-26 14:57:48

标签: meteor

在客户端我有这个:

var Coll1 = new Meteor.Collection('myCollection1');
var Coll2 = new Meteor.Collection('myCollection2');

var handle1 = null;
Deps.autorun(function () {
    var temp = Session.get('id');
    if (id) handle1 = Meteor.subscribe('myCollection1', id);
};

var handle2 = null;
Deps.autorun(function () {
    var temp = Session.get('id');
    if (id) handle2 = Meteor.subscribe('myCollection2', id);
};

在模板代码的其他地方,我这样做(当用户点击DOM元素时):

Coll1.insert({name: 'new element1');
Coll2.insert({name: 'new element2');

上述代码不会触发客户端(但在服务器上)的Coll1和Coll2更新。如果我刷新浏览器,则执行更新,即客户端与服务器同步并显示新元素。

我错过了什么?

1 个答案:

答案 0 :(得分:3)

您似乎没有在Session.get('id')

更改反应变量

Deps.autorun的工作方式如此

Deps.autorun(function(){
  var iAmReactive = Session.get('iAmReactive');
  <subscribe to something using iAmReactive>
});

如果iAmReactive的会话值发生变化,则重新运行订阅

这也可能是

Deps.autorun(function(){
  var iAmAReactiveQuery = Collection.find({<query>});
  <subscribe to something>
});

在这种情况下,如果查询中的数据发生更改,则重新运行订阅


发布功能是什么样的?你确定使用提供的id参数返回插入的项目吗?