2017-05-18 56 views
-1

該函數起作用,給我所需的對象,但僅在對服務器的第二個請求之後。在第一個請求,返回一個空數組,然後填充它,並在第二個請求已經發出在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

請向您的問題添加問題。澄清你的問題和你試圖解決的問題。 Ahow一些努力/ – Clijsters

+0

我需要從Mongo獲取一些對象並將它們添加到數組中。爲了響應請求,我必須發送這個數組 – dani5

回答

0

你忘了回報:

... 
return new Promise((resolve,reject) => { 
...