从解决方案访问集合

时间:2016-09-30 18:39:01

标签: angularjs meteor

如何验证meteor帐户模块的用户集合中的特定字段?

假设下一个代码:

$stateProvider.state('myState', {
  resolve:{
    function($q) {
      if(Meteor.userId()){
        return $q.resolve();
      }

      else {
        retrun $q.reject();
      }
    }
  }
})

在解析中可以使用Meteor.userId()函数从用户检索_id,但我不能以相同的方式使用Meteor.user()函数。如何从解决方案中检索该集合中的自定义数据

2 个答案:

答案 0 :(得分:0)

这有点棘手,但在您所在州的代码中可以解决:

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;
    }
}

这将确保在加载Meteor.user()记录之前路由不会解析,如果未登录,则拒绝路由。我花了一段时间才找到这个,但它现在是一个守护者:)

答案 1 :(得分:0)

根据要点,以下代码是我的助手的样子

this.helpers({
    member: () => Members.findOne({mid: Meteor.userId()}),
    currentUser: () => {
        return Meteor.user();
    },