我想检查用户是否已达到某个级别并根据该路由进行路由。但这并不等待wrapasync返回。怎么做到这一点?
Router.js
var getLevelAsync = function (userID, callback) {
Meteor.call('getLevel', Meteor.userId(), function (err, data) {
callback(null, data['level']);
})
}
var getLevel = Meteor.wrapAsync(getLevelAsync);
Router.route('/verifyData', function(){
var level = getLevel(Meteor.userId());
if(level < 3) this.render('somepage');
else this.render('another page');
})
服务器/ methods.js
getLevel: function (userID) {
return Meteor.users.findOne({_id: userID});
}
答案 0 :(得分:0)
Meteor.wrapAsync
围绕一个函数包装未来,这只能在服务器上完成。你不需要Meteor方法来实现你想要做的事情,你可以简单地渲染相同的页面,但根据当前用户呈现不同的上下文。
{{#with currentUser}}
{{#if aboveLevelThree}}
<h1>Congrats! You're in the special club!</h1>
{{else}}
<h3>Sorry mate, get a better score to advance</h3>
{{/if}}
{{/with}}
模板助手的位置如下:
Template['someTemplate'].helpers({
aboveLevelThree: function () {
return this.level > 3;
}
});