Возникла проблема, до конца не могу понять, как работать с асинхронными языками.
Функция работает, отдает мне нужный объект, но только после второго запроса на сервер
При первом запросе возвращает пустой array, потом заполняет его, а при втором запросе уже выдает
'use strict';
const user2 = require('../models/base');
var array = [];
var i =0;
exports.getEda = email =>
new Promise((resolve,reject) => {
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 !' }))
});