流星反应发布

时间:2016-03-24 04:22:04

标签: meteor

此Meteor代码在模板上的headerLabel上显示消息,服务器和/或客户端通过在HeaderLabelCol mongo集合中插入新消息来更改消息,并期望客户端模板更改因为它发布了最后插入的文档。

我能够使用客户端浏览器插入新消息但直到我刷新页面才显示,这可能表明反应链在某处被破坏了。问题是什么?怎么修好?感谢

//client.js
Template.header.helpers({
  headerLabel: function () {
    return HeaderLabelCol.findOne() ? HeaderLabelCol.findOne().headerLabel : 'Make a selection';
  }
});

//server.js
HeaderLabelCol = new Mongo.Collection('headerLabelCol');
Meteor.publish('headerLabelCol', function () {
  return HeaderLabelCol.find({userId: this.userId}, { sort: { createdAt: -1 } });
});

HeaderLabelCol._ensureIndex({createdAt: -1});
HeaderLabelCol.before.insert(function (userId, doc) {
  doc.userId = userId;
  doc.createdAt = Date.now();
});
HeaderLabelCol.allow({
  insert: function (userId, doc) {
    return (userId && doc.owner === userId);
  }
});

1 个答案:

答案 0 :(得分:0)

我认为您还需要在助手中添加条件。

//client.js
Template.header.helpers({
    headerLabel: function () {
        var result = HeaderLabelCol.findOne({}, { sort: { createdAt: -1 } });
        return result ? result.headerLabel : 'Make a selection';
    }
});