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

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

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

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

最佳答案

您正在观察客户端数据库的游标,并且该数据库可能直到页面加载完成后才能完成同步,因此该行为很有意义。您可能需要研究明确订阅某个集合,如this question的答案中所述。

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

  ItemCollection.find({created_at : {$gt: some_current_time}}).observe({
    added: function(item) {
      // Alert code
    }
  });

关于meteor - Meteor中的cursor.observe({added})行为,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10218534/

10-16 10:45