使用其他对象的相应名称replace对象标识

我非常新的angular,所以生病尝试尽可能清楚地描述问题。 正在尝试制作单页应用,并提供一些关于人与人之间交易的信息。 AS作为后端,使用MySQL数据库+ nodejs作为后台服务器,angular度作为前端。

问题是我有一个带有ID和姓名的人表,每个人的平衡。 然后,我有一张桌子,我存储了所有人员之间的交易(Id,Giver ID,Taker ID,金额)。

在前端,当我得到有关事务的信息时,我得到了提供者和接受者的IDS,但是我想用人表/对象中的相应名称replace它们。

我显然不知道如何pipe理这个。 我想过循环引发事务对象,并用名称replace数组中的每个ID。 就像在这篇文章中

交易对象:

[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" 

所以我想用名字Edgarsreplacegiver_id 1,因为作为FK给予者id可以识别人员id。

我不想要一个清晰的答案,但至less有一种方法来挖掘。

我的build议是处理服务器端的两个表之间的连接。

用户界面将使一个Web服务调用来获得交易。 响应应该是一系列事务,每个事务对象应该有提供者和接受者的名字。

您将需要一个SQL查询来join这两个表。 一个简单的连接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 } ] 

这样,所有的逻辑将在服务器端,你的用户界面只需要显示数据。

您可以从两个列表中映射一个新列表:

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

或者如果你只需要在一个对象上:

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