2017-05-14 152 views
0

我正在写一个节点程序,执行下面的操作。concat json结果在节点js

  • 扫描DynamoDB并获取结果。
  • 根据结果做到以下几点。
    • 如果返回值的大小为1. console.log的值。
    • 如果结果超过1个concat结果并打印到控制台。 目前我能够得到结果并在控制台中打印。如果它大于1,我很困惑我该怎么做。

以下是我的代码。

function getMyDueResponses(response, session) { 
var responseText=''; 
    console.log('Here is your result' + session.attributes.userData.Count); 
    console.log(session.attributes.userData.length); 
    if (session.attributes.userData.Count < 2) { 
    var res = session.attributes.userData; 
    var userDueDate = JSON.stringify(res.Items[0].dueDate); 
    var userDueAmount = JSON.stringify(res.Items[0].dueAmount); 
    var userTotalBalance = JSON.stringify(res.Items[0].totalBalance); 
    responseText = `Your next Chubb bill is due on ${userDueDate}. The payment due is ${userDueAmount}$. The full account balance is ${userTotalBalance}$.`; 
    console.log(responseText); 
} 
    else { 
    //Here I'm stuck on how to proceed. 
    } 
} 

例如。 数据库返回了下面的数据。

{ 
    "Items": [ 
     { 
      "accountId": "12345", 
      "pin": "1234", 
      "userId": "user1", 
      "dueDate": "5/20/2017", 
      "_id": "2", 
      "dueAmount": "4000", 
      "totalBalance": "10000" 
     } 
    ], 
    "Count": 1, 
    "ScannedCount": 4 
} 

响应应该是。我能够得到这个结果。

Your bill is due on 5/20/2017. The payment due is 4000$. The full account balance is 10000$. 

db返回了下面的数据。

{ 
    "Items": [ 
     { 
      "accountId": "12345", 
      "pin": "1234", 
      "userId": "user1", 
      "dueDate": "5/20/2017", 
      "_id": "2", 
      "dueAmount": "4000", 
      "totalBalance": "10000" 
     }, 
     { 
      "accountId": "12345", 
      "pin": "1234", 
      "userId": "user1", 
      "dueDate": "5/23/2017", 
      "_id": "2", 
      "dueAmount": "1000", 
      "totalBalance": "10000" 
     }, 
     { 
      "accountId": "12345", 
      "pin": "1234", 
      "userId": "user1", 
      "dueDate": "5/24/2017", 
      "_id": "2", 
      "dueAmount": "300", 
      "totalBalance": "10000" 
     } 
    ], 
    "Count": 3, 
    "ScannedCount": 4 
} 

以下数据必须打印在console.log()

Your bill 1 is due on 5/20/2017. The payment due is 4000$. The full account balance is 10000$. Your bill 2 is due on 5/23/2017. The payment due is 1000$. The full account balance is 10000$. Your bill 3 is due on 5/24/2017. The payment due is 300$. The full account balance is 10000$. 

请让我知道我该怎么做。

回答

2

为什么你不运行一个循环的项目数量?编辑:您可以在循环时将每个响应添加到数组中,然后使用Reduce()将该数组打印为单个字符串。

var arr = []; 
    var res = session.attributes.userData; 


    for (var x = 0; x < session.attributes.userData.Count; x++) { 

     var userDueDate = JSON.stringify(res.Items[x].dueDate); 
     var userDueAmount = JSON.stringify(res.Items[x].dueAmount); 
     var userTotalBalance = JSON.stringify(res.Items[x].totalBalance); 
     responseText = `Your next Chubb bill is due on ${userDueDate}. The payment due 
     is ${userDueAmount}$. The full account balance is ${userTotalBalance}$.`; 
     arr.push(responseText); 
    } 

console.log(arr.reduce(function(acc, cur) { return acc + cur; } 
+0

感谢您的快速建议,这不符合我的情况。我知道循环会完成这项工作。但是我想在循环完成后进行控制台打印......我听说这个东西可以使用承诺实现,但我不确定这个东西是如何工作的。你能帮我解决这个问题吗? – user3872094

+0

我使用Reduce编辑了我的答案,也许这是你需要的吗? –