2017-10-03 9 views
0

私は2つの関数呼び出しの結果を結合して、jsonオブジェクトをAPI呼び出しの出力として返します。MongoDB検索クエリの出力を結合するには?

getUserList機能は、登録されたユーザーのリストを再試行してaverageUserAge機能は、人の平均年齢は、私は両方の出力を組み合わせて、JSONオブジェクトを返したいマージ機能では、特定の年齢層

に属して返します。

私はこれをどのように達成することができるか説明しますか?

ビジネスケースで期待される出力が得られないため、集計関数を探していないことに注意してください.Belowは、説明が複雑すぎるビジネスケースとして探しているサンプルを示しています。

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

[jsonオブジェクトの結合またはマージ]の可能な複製(https://stackoverflow.com/questions/14974864/combine-or-merge-json-on-node-js-without-jquery) –

+0

この回答を参照してくださいhttps: //stackoverflow.com/a/45728310/7635845実際にこの答えはmysqldbに関連しており、mysqlクエリの代わりにmongodbクエリとチェックを保持しています。このコードは私にとってはうまくいきます。これがmongodbでも役立ちます。 –

答えて

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.allresult1result2がそれぞれそれらの値を返したことを確認します。次に、res1res2の結果を含むJSONオブジェクトを含むレスポンスを返します。

1

あなたがこの素晴らしいライブラリasyncを使用するかは、あなたがこのような何かを試みることができるコールバック

関連する問題