我正在尝试在将数据添加到数据库时向用户显示警报.所以我写了(在客户端):
Meteor.autosubscribe(function() {
ItemCollection.find().observe({
added: function(item) {
// Alert code
}
});
});
Run Code Online (Sandbox Code Playgroud)
我发现,当一个新项目添加到服务器端的数据库时,不仅会显示警报(我认为这是正常的:))但是当我刷新页面时,还会为每个先前添加的项目显示警报.我想Meteor在启动时从Mongo数据库中获取所有数据(以填充本地Minimongo数据库),然后为本地数据库中添加的每个项目触发"已添加"事件.
但这是正常行为吗?如何只接收服务器上数据库中"真正"添加的项目?
我正在尝试显示我的页脚中的用户数量,我希望实时显示这个数字.我认为正确的方法是在服务器中创建一个发布并从客户端订阅.
// server/publications.js
Meteor.publish("usersCount", function () {
return Meteor.users.find();
});
// client/main.js
UsersCount = new Meteor.Collection("usersCount");
Meteor.subscribe('usersCount', [], function() {
console.log('subscribed.');
});
// client/views/layout/footer.js
Template.footer.helpers({
famecoiners: function(){
return UsersCount.find().count();
}
});
// client/views/layout/footer.html
<span>{{famecoiners}} Famecoiners!</span>
Run Code Online (Sandbox Code Playgroud)
在chrome控制台中,我们可以看到回调函数中的"订阅"字符串.问题是:{{famecoiners}}总是在我的模板中返回0.