【问题标题】:How to combine output from MongoDB find query?如何组合 MongoDB 查找查询的输出?
【发布时间】:2018-03-14 11:44:08
【问题描述】:

我正在尝试组合两个函数调用的结果并将一个 json 对象作为输出返回给我的 api 调用。

getUserList 函数重试注册用户列表,averageUserAge 函数返回属于特定年龄组的人的平均年龄

在合并函数中,我想合并两者的输出并返回一个 json 对象。

有人能解释一下我怎样才能做到这一点吗?

请注意,我不是在寻找聚合函数,因为它不会在我的业务案例中产生预期的输出。下面是示例代码,用于演示我正在寻找的内容,因为我的业务案例太复杂而无法解释。

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)

}

【问题讨论】:

标签: javascript node.js mongodb mongoose


【解决方案1】:

你可以使用这个很棒的库 async 或者你可以使用回调

【讨论】:

    【解决方案2】:

    你可以试试这样的:

    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 确保 result1result2 分别返回了它们的值。然后,您发回包含 JSON 对象的响应,其中包括您的 res1res2 结果。

    【讨论】:

      猜你喜欢
      • 2018-12-28
      • 1970-01-01
      • 2021-11-14
      • 1970-01-01
      • 2020-11-23
      • 1970-01-01
      • 1970-01-01
      • 2016-12-06
      • 1970-01-01
      相关资源
      最近更新 更多