2017-06-12 7 views
1

私は非常に新しく角度があります。 人と人との間の取引に関するいくつかの情報を持つシングルページアプリケーションを作成することができます。 MySQLデータベース+ nodejをバックエンドサーバとして使用し、フロントエンドとして角度を使用するバックエンドオブジェクトIDを他のオブジェクトの対応する名前に置き換えてください。

問題は、私はIDと名前、人それぞれのバランスを持つ人テーブルがあることです。 それから私は人々(Id、Giver ID、Taker ID、Amount)の間のすべてのトランザクションを保存するテーブルを持っています。

フロントエンドでトランザクションに関する情報を取得すると、贈与者と入札者のIDSが取得されますが、テーブル/オブジェクトの人物の対応する名前に置き換えます。

これをどのように管理するかわかりません。私はトランザクションオブジェクトを繰り返し実行し、配列の各IDを名前に置き換えることを考えました。 Something like in this post

Transactionオブジェクト:

[Object]0: id: 1 giver_id: 1 taker_id: 5 amount: 50 

者は、オブジェクト:

[Object]0: balance:"-50" id:1 name:"Edgars"[Object]1: balance:"0" id:2 name:"Jānis" 

だから私は、寄贈者IDのFKは人物IDをmachesとしてので、名前Edgarsでgiver_id 1を交換したいです。 。

私は明確なanswearをたくないが、中に掘るために少なくとも方法

答えて

2

私の提案は、サーバー側の2つのテーブル間の結合を処理することです。

UIは、トランザクションを取得するために1つのWebサービス呼び出しを行います。応答はトランザクションの配列でなければならず、各トランザクションオブジェクトは与えられた人の名前を持つ必要があります。

2つのテーブルを結合するにはSQLクエリが必要です。単純な結合SQLは、このようになります。

select t.id as TRANS_ID, gp.name as GIVER, tp.name as TAKER, t.amount 
    from transaction t 
     join person gp on t.giver_id = gp.id 
     join person tp on t.taker_id = tp.id; 

UIにJSON応答は次のようになります。

[ 
{ 
    "trans_id": 1, 
    "giver_name": "James", 
    "taker_name": "Michael", 
    "amount": 50 
}, 
{ 
    "trans_id": 2, 
    "giver_name": "Jim", 
    "taker_name": "Mike", 
    "amount": 100 
} 
] 

この方法では、あなたのロジックはすべてサーバー側でだろうと、あなたのUIは、データだけを表示することがあります。

+0

これは私の場合にはほぼ完璧でした。どうもありがとうございました! –

1

あなたは、両方のリストから新しいリストをマップすることができます:

var newList = transactionsList.map(function(t) { 
    var giver,taker; 
    giver = personList.find(function(p) { 
    return p.id == t.giver_id; 
    }); 
    taker = personList.find(function(p) { 
    return p.id == t.taker_id; 
    }); 

    if(giver && taker) { 
    t.giver_name = giver.name; 
    t.taker_name = taker.name; 
    return t; 
    } 
    else { 
    return undefined; 
    } 
}); 

それとも、1つのオブジェクトのみにこのする必要がある場合:

function transformTransaction(t) { 
    var giver,taker; 
    var newTransaction = angular.copy(t); 
    giver = personList.find(function(p) { 
    return p.id == t.giver_id; 
    }); 
    taker = personList.find(function(p) { 
    return p.id == t.taker_id; 
    }); 

    if(giver && taker) { 
    newTransaction.giver_name = giver.name; 
    newTransaction.taker_name = taker.name; 
    return newTransaction; 
    } 
    else { 
    return undefined; 
    } 
} 
関連する問題