从解决方案访问集合
问题描述:
如何从流星帐户模块的用户集合中验证特定字段?从解决方案访问集合
假设下一个代码:
$stateProvider.state('myState', {
resolve:{
function($q) {
if(Meteor.userId()){
return $q.resolve();
}
else {
retrun $q.reject();
}
}
}
})
决心里面是可以使用Meteor.userId()函数来检索来自用户的_id,但我不能使用Meteor.user()函数一样的方法。我怎样才能从集合中检索自定义数据从决心
答
这是一个有点棘手,但可以解决使用此代码在您的状态:
resolve: {
currentUser: ($q) => {
var deferred = $q.defer();
Meteor.autorun(function() {
if (!Meteor.loggingIn()) {
if (Meteor.user() == null) {
deferred.reject('AUTH_REQUIRED');
} else {
deferred.resolve(Meteor.user());
}
}
});
return deferred.promise;
}
}
这将确保路由没有解决,直到流星.user()记录被加载,并且如果未登录,则拒绝该路由。我花了一段时间才能找到这一个,但它是一个门将现在:)
为什么你不能用'流星。用户()'在同样的方式?这个函数不会返回整个'user'对象吗? – lucasnadalutti
是的,它应该,或者至少我猜它应该,但是......它没有,可能与Angular加载数据的执行顺序有关。 – 2JN