我正在尝试组合两个函数调用的结果,并将一个json对象作为输出返回到我的api调用。
getUserList函数重试注册用户列表,averageUserAge函数返回属于特定年龄组的人的平均年龄
在合并函数中,我想组合两者的输出并返回一个json对象。
有人可以解释我怎样才能实现这个目标?
请注意,我不是在寻找聚合函数,因为它在我的业务案例中没有产生预期的输出。下面是为了展示我正在寻找的东西而编写的示例代码,因为我的业务案例太复杂而无法解释。 / p>
function getUserList(req,res){
userModel.findOne({ageGroup : 'some group'},{name : 1,email : 1, credits : 1},{}, function(err, result) {
if( err || !result) {
console.log("No user found");
} else {
return result
};
});
}
function averageUserAge(req,res) {
ageModel.findOne({ageGroup : 'some group'},{email : 1, credits : 1},{},
function(err, result) {
if( err || !docs) {
console.log("No users with a particular age group found");
} else {
return result
};
});
}
//Merge the output of two function calls
function merge(req,res){
var result1=getUserList(req,res)
var result2=averageUserAge(req,res)
var mergedResult=//How to merge result1 & result2
return res.json(mergedResult)
}
答案 0 :(得分:1)
你可以使用这个很棒的库async或者你可以使用回调
答案 1 :(得分:0)
您可以尝试这样的事情:
function merge(req, res) {
const result1 = getUserList(req,res);
const result2 = averageUserAge(req,res);
return Promise.all([result1, result2]).then(() => {
return res.send({res1: result1, res2: result2});
}).catch(e => res.status(400).send(e));
};
Promise.all
确保result1
和result2
分别返回了它们的值。然后发回包含JSON对象的响应,包括res1
和res2
结果。