如何使用两个或多个查询呈现首页
How to render the frontpage with two or more queries
我们在名为 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
(可能是 amountPledged
和 amountPledgedSecond
).
如果你想要 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,
})
});
})
我们在名为 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
(可能是 amountPledged
和 amountPledgedSecond
).
如果你想要 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,
})
});
})