此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);
}
});
答案 0 :(得分:0)
我认为您还需要在助手中添加条件。
//client.js
Template.header.helpers({
headerLabel: function () {
var result = HeaderLabelCol.findOne({}, { sort: { createdAt: -1 } });
return result ? result.headerLabel : 'Make a selection';
}
});