如何将承诺应用于 app.get?
How to apply promises to app.get?
如何将承诺应用于 app.get()?
在这个例子中,url returns 是一个空数组。我怎样才能让它在返回任何东西之前等待结果?
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 已经 returns 承诺如果您不为其提供回调,那么您的代码在:
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
});
如何将承诺应用于 app.get()? 在这个例子中,url returns 是一个空数组。我怎样才能让它在返回任何东西之前等待结果?
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 已经 returns 承诺如果您不为其提供回调,那么您的代码在:
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
});