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

How to render the frontpage with two or more queries

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

每个页面都用 app.getres.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).

如果你想要 two/more 查询,那么你可以定义 two/more 查询(这将 return 承诺)然后简单地使用 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,
       }) 
    });

})