如何使用两个或多个查询呈现首页

时间:2017-08-15 10:37:18

标签: node.js express rethinkdb

对于我们的众筹平台,我们在名为app.js的文件中配置了快速服务器。

每个页面都以app.get& res.render,就像这样:

app.get('/some-page', function (req, res) {
  res.render('some-page', {
    title: 'some-title'
  })
})

在我们的首页上,我们在其中一个众筹广告系列中包含查询金额,以显示当前状态。我们这样做:

app.get('/frontpage', function (req, res) {

  Payment.filter({
    projectName: 'testCampaign'
  })

  .sum("amount")
  .execute().then(function (amountPledged) {

    res.render('frontpage', {
      amountPledged: amountPledged / 100,
    })
  })
})

问题,此结构使得很难对当前广告系列进行两次(或多次)查询。

我们需要在我们的首页上同时拥有两个(或更多)不同amountPledged的方式(可能是amountPledgedamountPledgedSecond)。

1 个答案:

答案 0 :(得分:1)

如果您想要两个/更多查询,那么您可以定义两个/更多查询(将返回承诺),然后只需使用promise.all来获取所有输出。如果你的问题是我认为的那样。

你可以这样做:

app.get('/frontpage', function (req, res) {

    var p1 = Payment.filter({
      projectName: 'test1Campaign'
    })
    .sum("amount")
    .execute()
    var p2 = Payment.filter({
      projectName: 'test1Campaign'
    })
    .sum("amount")
    .execute()

    Promise.all([p1, p2]).then(values => { 
       // values is an array of resolved value of respective promises
       // You can manipulate the array to get your desired value(like diving all element by 100)
       res.render('frontpage', {
          amountsPledged: values,
       }) 
    });

})