Meteor.js发布和订阅2

时间:2013-09-25 00:05:07

标签: javascript meteor

我最近有一个关于同一主题的问题(后人: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。问题没有解决。它又出现了。

一旦帖子数达到一定的门槛,它似乎会拒绝它们,这让我相信它与“限制”有关。

任何帮助?

1 个答案:

答案 0 :(得分:0)

假设您的客户端在其本地缓存中有100个帖子。然后,当客户端插入新帖子时,它会直接插入到客户端缓存中(因此它现在包含101个帖子),并在后台将其发送到服务器。服务器将其插入到真实数据库中,然后告诉客户端删除其中一个缓存的帖子,因为它应该只在其缓存中存储100个帖子。这可能是你发生的事情。