gpt4 book ai didi

node.js - 如何将 promise 应用于 app.get?

转载 作者:搜寻专家 更新时间:2023-11-01 00:43:08 26 4
gpt4 key购买 nike

如何将 promise 应用于 app.get()?在此示例中,url 返回一个空数组。我怎样才能让它在返回任何东西之前等待结果?

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

allBills = new promise(function (fulfill, reject){
Bills.find(function(err, bills){
if(err)
reject(err);

fulfill(bills);
});
});

allTransactions = new promise(function (fulfill, reject){
Transactions.find(function(err, transactions){
if (err)
reject(err);
else if (transactions.length !== 0){
fulfill(transactions);

}
});
});

allBills.then(function(bills){

allTransactions.then(function(transactions){
var results = {};
results = bills;
results.transactions = transactions;

// TODO: WORK WITH THE RESULTS HERE AND SEND TO THE CONTROLLER.
console.log(results);
res.send(results);
});
});

});

谢谢!

最佳答案

如果您不为它提供回调,Mongoose 已经返回 promise ,因此您的代码:

allBills =  new promise(function (fulfill, reject){
Bills.find(function(err, bills){
if(err)
reject(err);

fulfill(bills);
});
});

可能真的只是:

allBills = Bills.find().exec();

至于聚合,大多数 promise 库都有一个 Promise.all 方法:

Promise.all([Bills.find().exec(), Transactions.find().exec()]).then(function(results){
var ret = results[0]; // bills
ret.transactions = results[1];
console.log(ret);
res.json(ret); // send it as json
});

关于node.js - 如何将 promise 应用于 app.get?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27763543/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com