2017-02-15 3 views
0

2つの異なるテーブルから角度jで2つの同様の値を作成する方法を理解するための少しの手引きが必要です。使用しているテーブルは、ユーザーテーブルと学校テーブルです。だから私がする必要があるのは、そのユーザーに関連する学校の名前を取得するはずのログインしたユーザーに基づいていますが、現在これについてどうやって行くのかはわかりません。どのようにこれについて行くかについて私を導くどんな援助も非常に高く評価されるでしょう。anglejsを使用して2つの異なるデータベースのアイテムを一致させる方法

スクールサービスコントローラコード:

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

プロフィールコントローラーコードスニペット:「$ scope.find機能」の

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; 

     } 
    } 
    ] 
}); 
    }; 
}); 

マイ値が正しく返されますが、学校名のリスト全体であり、ユーザに合ったものではなく詳細です。

答えて

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; 
      } 
     }); 
    }); 
} 
関連する問題