我正在尝试使张贴页面成为一种路线,其中它使用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)
}
});
一切正常,但我发现一件事是不一致的。
这是我遇到的问题...
用户进入单个帖子页面并添加评论(一切正常)。
用户进入不同的单个帖子页面并添加评论(一切正常)。
这是问题开始的地方
用户在任何时候都可以进入另一条不是单个帖子页面的路线。
用户返回到单个帖子页面
评论未显示。
新评论将添加到数据库中,但仍不会显示
仅当执行
meteor reset
或手动删除MongoDB中的所有注释时,此问题才会消失。有没有更好的方法可以编码我的路由和相关代码来阻止这种奇怪的行为发生?
甚至有更好的做法。
最佳答案
您的发布正在发布没有任何postId
筛选器的评论。
您的助手,按postId
过滤。也许发布的4条评论不属于当前公开的评论?
您能否尝试更新您的订阅
Meteor.subscribe('comments', {
postId: this.params._id
}, {
limit: Number(Session.get('commentLimit'))
})
和您的出版物
Meteor.publish('comments', function(filter, options) {
check(filter, {
postId: String
});
check(options, {
limit: Number
});
return Comments.find(filter, options);
});
以便只发布相同的帖子评论?