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

标签 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 的更新(但在服务器上很好)。如果我刷新浏览器,就会执行更新,即客户端与服务器同步并显示新元素。

我错过了什么?

最佳答案

您似乎没有在此处更改 react 变量 Session.get('id')
Deps.autorun 像这样工作

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

如果 iAmReactive 的 session 值更改,订阅重新运行

这也可能是这样的
Deps.autorun(function(){
  var iAmAReactiveQuery = Collection.find({<query>});
  <subscribe to something>
});

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

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

关于 meteor :更新集合时未触发 Deps.autorun,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16239465/

相关文章:

meteor - 我可以从 Meteor 助手返回异步值(Promise)吗?

javascript - Meteorjs Javascript 文件未执行(需要刷新)

node.js - 当我尝试在 Meteor 应用程序中访问 process.env.PWD 时,它说它未定义

javascript - 避免在服务器端路由上使用全局 onBeforeAction 方法

node.js - MongoDB的filemd5是否能够设置readPreference

javascript - 如何更新 meteor 中的电子邮件地址?

javascript - Meteor - 当模板被销毁时停止跟踪器自动运行(用户离开页面)

meteor - 在 meteor 的最新版本(0.9.x)中是否可以按需加载客户端代码?

javascript - 单击 Meteor 中的链接时下载文件

javascript - 如何使用 Meteor.js 显示所有登录用户的列表