を働いていないモンゴの検索操作がうまく動作するコードされています。今、私は「returndataは、検索クエリの結果である1つの以上の特性を持つべきである」ことを望ん予想通りの下
for(i=0;i<distinct_branch.length;i++){
myobj = {}
myobj['branch'] = distinct_branch[i]
myobj['total_re'] = 0
myobj['present'] = 0
myobj['absent'] = 0
myobj['weekly_off'] = 0
myobj['leave'] = 0
myobj['total_marked'] = 0
myobj['pending_attend'] = 0
myobj['dat_compliance'] = 0
myobj['pending_dat_compliance'] = 0
for(j=0;j<results.length;j++){
if(results[j].counter){
if(results[j].counter.state){
if(distinct_branch[i]==results[j].counter.state){
myobj['total_re'] = myobj['total_re'] + 1
if(results[j].attendance == 'P') {
myobj['present'] = myobj['present'] + 1
myobj['total_marked'] = myobj['total_marked'] + 1
}
else{
if(results[j].attendance == 'A') {
myobj['absent'] = myobj['absent'] + 1
myobj['total_marked'] = myobj['total_marked'] + 1
}
else{
if(results[j].attendance == 'O') {
myobj['weekly_off'] = myobj['weekly_off'] + 1
myobj['total_marked'] = myobj['total_marked'] + 1
}
else{
if(results[j].attendance == 'L') {
myobj['leave'] = myobj['leave'] + 1
myobj['total_marked'] = myobj['total_marked'] + 1
}
else{
if(results[j].attendance == 'Pending') {
myobj['pending_attend'] = myobj['pending_attend'] + 1
}
}
}
}
}
myobj['dat_compliance'] = (myobj['total_marked']/myobj['total_re'])*100
myobj['pending_dat_compliance'] = 100 - myobj['dat_compliance']
}
}
}
}
returndata.push(myobj)
}
以下 がクエリであります:
imports.db.mdb.collection('sales_details').find({'user.empcode':'481625'},function(err,sale_data){
myobj['test']=sale_data;
});
returndata.push(myobj);
//しかし、私はそれぞれ、すべてを試してみましたし、私はthis.Nodeは(見つける)最初にしてクエリが実行さを押す操作を実行している実行することができません。 私はdistinct_branch.lengthと等しいかどうかを比較することによってfindのコールバックでmyobjをプッシュしましたが、それも機能していません。 ありがとうございます。
これを簡略化できますか? –
こんにちはAkshay! mongodb .findは非同期に動作します。つまり、db-search操作をトリガーし、dbが検索する以外に、コードの残りの部分を並列実行します。 findメソッドが準備完了すると、コールバック(find関数で最後に指定した関数)が呼び出されます。あなたは 'returndata.push(myobj)'をコールバックの中に追加する必要があります。また、returndata配列を使用するコードを同期させなければならないので、istはプッシュ操作後にそれを消費します。私はあなたにヒントを与えることはできません、なぜならあなたはその使用法を示さなかったからです。 –
私のreturndataは私のコントローラーで送ることができないように更新するだけです。 – Akshay