2017-05-18 10 views
-1

この関数は機能しますが、必要なオブジェクトを返しますが、サーバへの2回目のリクエスト後にのみ必要です。最初の要求では、空の配列を返し、それを満たし、かつ、第2の要求で、すでにあなたはリターンを忘れるNode.jsでの並列クエリ

'use strict'; 
 

 
const user2 = require('../models/base'); 
 
var array = []; 
 
var i =0; 
 

 

 

 
exports.getEda = email => 
 
    
 
    new Promise((resolve,reject) => { 
 

 
    \t user2.count().exec(function(err, count){ 
 

 
    var random = Math.floor(Math.random() * count); 
 
    var calories = 2500; 
 

 
    test(calories); 
 

 
    
 
    function test(calories, random) { 
 
    user2.findOne().skip(random).exec(
 
    function (err, result) { 
 
     random = Math.floor(Math.random() * count); 
 
     
 
     var stringify = JSON.stringify(result); 
 
     var jsonContent = JSON.parse(stringify); 
 
     calories = calories - jsonContent.calories; 
 
     console.log(calories); 
 
     if (calories > 0){ 
 
     test(calories, random); 
 
     } 
 
     
 
     array[i] = result; 
 
     i++; 
 
     
 
    }); 
 
    } 
 
     
 
    console.log(array); 
 
     
 
}) 
 

 
    .then(eda => resolve(array)) 
 
    .catch(err => reject({ status: 500, message: 'Internal Server Error !' })) 
 
    
 
    });

+1

適切にコードします。 – str

+1

あなたの質問に質問を追加してください。あなたの問題は何か、それを解決しようとしたことを明確にしてください。どのような努力をしている/ – Clijsters

+0

私はMongoからいくつかのオブジェクトを取得し、それらを配列に追加する必要があります。この要求に応じて、私はこの配列を送る必要があります – dani5

答えて

0

を発行します。フォーマットしてください/インデント

... 
return new Promise((resolve,reject) => { 
... 
関連する問題