9

当数据添加到数据库时,我试图向用户显示警报。所以我写了(在客户端):

Meteor.autosubscribe(function() {
  ItemCollection.find().observe({
    added: function(item) {
      // Alert code
    }
  });
});

而且我发现,当新项目添加到服务器端的数据库时,不仅会显示警报(我认为这是正常的:)),而且当我刷新页面时,还会为每个先前添加的项目显示警报。我想 Meteor 在启动时从 Mongo 数据库中获取所有数据(以填充本地 Minimongo DB),然后为本地数据库中添加的每个项目触发“添加”事件。

但这是正常的行为吗?如何仅接收“真正”添加到服务器数据库中的项目?

4

1 回答 1

13

您正在观察客户端数据库的游标,并且该数据库可能在页面加载完成后才能完成同步,因此该行为是有意义的。您可能想要研究明确订阅一个集合,如该问题的答案中所讨论的那样。

如果您的数据有 created_at 字段,那么您可以观察页面加载后创建的项目。

  ItemCollection.find({created_at : {$gt: some_current_time}}).observe({
    added: function(item) {
      // Alert code
    }
  });
于 2012-04-18T23:21:10.773 回答