我最近有一个关于同一主题的问题(后人:Meteor.js Publishing and Subscribing?)。
我有一个测试Meteor网站。我在根目录的文件中有以下内容:
/**
* Models
*/
Posts = new Meteor.Collection('posts');
posts = Posts;
if (Meteor.isClient) {
Meteor.subscribe('posts');
}
if (Meteor.isServer) {
Meteor.publish('posts', function() {
return posts.find({}, {time:-1, limit: 100});
});
posts.allow({
insert: function (document) {
return true;
},
update: function () {
return false;
},
remove: function () {
return false;
},
});
}
发生的事情是我进行了编辑,它停止了工作(在开发服务器上:localhost:3000)。我还原了编辑,但我想有些事情发生了变化,因为它不再适用。
客户端确实可以访问Collection(帖子加载列表),因此不是问题。
问题是,第二个客户提交帖子,它在列表中显示一秒然后消失。
当客户端没有发布权时,似乎有类似的行为,但正如您在上面我看到的那样,我已经给出了它。
当我在Chrome中访问JS控制台时,没有出现“拒绝访问”或错误。
当我尝试从控制台添加帖子时,会发生同样的行为。闪烁,然后就消失了。
发生了什么事?这只是一个奇怪的流星故障吗?任何帮助表示赞赏。
修改
好的,显然是某种内部的流星故障; “流星重置”修复了代码本身无变化的问题。
所以我猜问题已经解决了!
编辑2
NOOOO。问题没有解决。它又出现了。
一旦帖子数达到一定的门槛,它似乎会拒绝它们,这让我相信它与“限制”有关。
任何帮助?
答案 0 :(得分:0)
假设您的客户端在其本地缓存中有100个帖子。然后,当客户端插入新帖子时,它会直接插入到客户端缓存中(因此它现在包含101个帖子),并在后台将其发送到服务器。服务器将其插入到真实数据库中,然后告诉客户端删除其中一个缓存的帖子,因为它应该只在其缓存中存储100个帖子。这可能是你发生的事情。