我正在研究Meteor应用程序。有时,服务器使用外部数据库中的数据更新当前用户。当发生这种情况时,我想在客户端打开的应用程序的任何页面上显示警报。我知道Meteor.user会在客户端上自动更新,但我无法知道如何以及在何处让应用程序监视用户的更改并对其做出反应。关于这个的任何想法?
通过邮件向服务器触发用户更新:
Router.map(function() {
this.route('/reload_user', {where: 'server'}).post(function() {
var data = this.request.body;
var user = Meteor.users.findOne({ "profile.id": data.id });
var data = Account.getAccountInfo(apiKey, secretKey);
Meteor.users.update(user._id, {
$set: {
"profile.paywall": data.paywall,
}
});
this.response.end();
});
答案 0 :(得分:2)
在服务器端,您希望公开用户集合的发布。在客户端上,您希望自动订阅该发布并处理已更改的事件:
Meteor.autosubscribe(function() {
Meteor.users.find().observe({
changed: function(item) {
alert(item);
}
});
});
答案 1 :(得分:1)
我将如何做到这一点:
在您的发布请求的成功回调中,设置会话变量,如下所示:Session.set("userUpdated", true)
然后我创建一个全局模板助手来返回此会话变量的值。由于Meteor如何使用Session.get等反应变量,它会在您设置时自动更新。
Template.registerHelper("userUpdatedHelper", function () {
return Session.get("userUpdated");
}
然后在任何模板中,您可以使用以下内容:
{{#if userUpdatedHelper}} //true when you set it to true, otherwise undefined
//show alert messaging here
{{/if}}
这样的事情就是我开始的地方。