2017-02-15 49 views
0

我需要一些指导来确定如何在两个不同的表中为角度js创建两个相似的值。我使用的表格是用户表格和学校表格。所以我需要做的是基于登录的用户,我应该得到一个与该用户相关的学校名称,但目前我不知道如何去做这件事。任何帮助指导我如何去做这件事将不胜感激。如何使用angularjs匹配来自两个不同数据库的项目

学校服务控制器代码:

angular.module('starter').factory('Schools',['apiUrl','$resource', 'UserInfo', function(apiUrl,$resource, UserInfo){ 
    var factory = $resource(apiUrl + '/schools/:schoolId', 
    { 
     schoolId: '@_id' 
    }, { 
     update: { 
      method: 'GET' 
     } 
    }); 

    return factory; 
}]); 

档案控制器代码段:

angular.module('starter.controllers') 

.controller('ProfileController', function($scope,$http,$state,Schools, $ionicPopup, apiUrl, UserInfo,$ionicLoading,$ionicHistory,Users,Authentication) { 

    $scope.apiUrl = apiUrl; 
    $scope.authentication = Authentication; 
    $scope.state = $state; 
    $scope.selected = {}; 

    var user = Authentication.user.school; 

    $scope.find = function(queryParams){ 
    $scope.place = []; 
    var user = $scope.authentication.user.school; 
    var school = Schools.query({_id: user.school}) 

    var params = queryParams || {}; 
    params._id = user; 

    Schools.query(params, function(response){ 
     if (params._id === school){ 
      // response.splice(0, $scope.place.lengh); 
      // for(var x = 0; x< response.lengh; x++){ 
      // $scope.place.push(response[x]); 
      // } 
      $scope.place = response[0].name; 
     } 
     else{ 
      $scope.place = response; 
     } 
    }) 
} 

    $scope.signOut = function(){ 

     $ionicPopup.confirm({ 
      title: "SIGN OUT", 
      template: '<p align="center">' + 'PLEASE CONFIRM IF YOU WANT TO SIGN OUT'+ '</p>', 
      buttons: [ 
      { text: "NO", 
      type: 'button button-outline button-assertive', 
      onTap:function(e){ 
       return false; 
      } 
     }, 
     { 
      text: "YES", 
      type:'button-positive', 
      onTap:function(e){ 
      //now you can clear history or goto another state if you need 
      $ionicHistory.clearHistory(); 
      $ionicHistory.nextViewOptions({ disableBack: true, historyRoot: true }); 

      $state.go('signin'); 
      return true; 

     } 
    } 
    ] 
}); 
    }; 
}); 

我为“$ scope.find功能”值正常返回,但学校名称的整个列表和细节而不是与用户相匹配的细节。

回答

0

我认为这是服务器端逻辑。当你将登录用户传递给你的api时,在服务器端根据该用户做一些数据库查询,并返回包含所有学校列表的json对象。

+0

是的,这就是它是如何工作至今。我只是主要与预制控制器进行交互。我还是有点新的角,所以我想了解如何循环我的数据,以查找用户表详细信息是否与学校名称相关的学校表详细信息,因为当前用户表只显示学校表ID,而不是名字。 –

0

我终于想出了一种方法,可以根据用户表中学校的id引用获取正确的值。我不得不使用angularjs forEach方法来首先查询数据,然后在if语句中对其进行过滤,以获得我期待的结果。

解决方案:

$scope.find = function(){ 
    var school = $scope.authentication.user.school; 
    $scope.schoolName = Schools.query(function(results) { 
     results.forEach(function(result) { 
      if (result._id === school) { 
       $scope.schoolName = result.name; 
       return $scope.schoolName; 
      } 
     }); 
    }); 
} 
相关问题