我正在尝试在将数据添加到数据库时向用户显示警报。所以我写了(在客户端):
Meteor.autosubscribe(function() {
ItemCollection.find().observe({
added: function(item) {
// Alert code
}
});
});
我发现不仅在服务器端将新项目添加到数据库时显示警报(我认为这是正常的:))但是当我刷新页面时,还会为每个先前添加的项目显示警报。我想Meteor在启动时从Mongo数据库中获取所有数据(以填充本地Minimongo数据库),然后为本地数据库中添加的每个项目触发“已添加”事件。
但这是正常行为吗?如何只接收服务器上数据库中“真正”添加的项目?
答案 0 :(得分:13)
您正在观察客户端数据库的游标,并且该数据库可能无法在页面加载完成之后完成同步,因此该行为是有意义的。您可能希望查看明确订阅集合,如this question的答案中所述。
如果您的数据有一个created_at字段,那么您可以观察页面加载后创建的项目。
ItemCollection.find({created_at : {$gt: some_current_time}}).observe({
added: function(item) {
// Alert code
}
});