【发布时间】:2015-08-21 22:44:26
【问题描述】:
我正在尝试让 sing post page 成为一条使用 Iron:router 做几件事的路线
- 使用模板
postPage - 订阅
singlePost、userStatus(显示单个帖子页面作者的状态和信息)、comments的发布。 - 抓取
Comments具有postId : this.params._id字段的文档 - 增加
Session.get('commentLimit')的评论列表
这是我目前拥有的代码。
Router.js
Router.route('/posts/:_id', {
name: 'postPage',
subscriptions: function() {
return [
Meteor.subscribe('singlePost', this.params._id),
Meteor.subscribe('userStatus'),
Meteor.subscribe('comments', {
limit: Number(Session.get('commentLimit'))
})
];
},
data: function() {
return Posts.findOne({_id:this.params._id});
},
});
Publications.js
Meteor.publish('singlePost', function(id) {
check(id, String);
return Posts.find(id);
});
Meteor.publish('comments', function(options) {
check(options, {
limit: Number
});
return Comments.find({}, options);
});
Template.postPage.onCreated
Template.onCreated( function () {
Session.set('commentLimit', 4);
});
Template.postPage.helpers
Template.postPage.helpers({
comments: function () {
var commentCursor = Number(Session.get('commentLimit'));
return Comments.find({postId: this._id}, {limit: commentCursor});
},
});
Template.postPage.events
Template.postPage.events({
'click a.load-more-comments': function (event) {
event.preventDefault();
Session.set('commentLimit', Number(Session.get('commentLimit')) + 4)
}
});
一切正常,但我发现有一点不一致。 这是我遇到的问题...
- 用户进入单个帖子页面并添加评论(一切正常)。
- 用户进入不同的单个帖子页面并添加评论(一切正常)。
-
问题从这里开始
- 用户在任何时候都会进入另一个不是单个帖子页面的路径。
- 用户返回单个帖子页面
- cmets 未显示。
- 新的 cmets 将添加到 DB 中,但仍不会显示
- 只有在执行
meteor reset或手动删除 MongoDB 中的所有 cmets 时,此问题才会消失。
有没有更好的方法来编写路由和相关代码以阻止这种奇怪行为的发生?
或者即使有更好的做法。
【问题讨论】:
标签: javascript mongodb meteor publish-subscribe iron-router