Функция для получения списка, содержащего данные модели мангуста - PullRequest
0 голосов
/ 10 июня 2018

Я пытаюсь реализовать функцию в Express, чтобы вернуть список с данными из модели Мангуста.«MiModelo» - это модель мангуста, созданная из схемы.

//Get data in the DB
function getAllData()
{
    var promesa = MiModelo.find().exec();
    console.log(promesa);
    console.log("---");
    var miLista=[];
    async = require('async');
    async.parallel([function(){
        promesa.then(function(datos)
        {
            datos.forEach(function(dato){
                console.log("dato: " + dato.numero)
                miLista.push(dato.numero);
            });
        });
    }],function(){
        console.log(miLista);
    });
    return miLista;
}

В последнем файле console.log () я могу получить все значения полей «нумерация» из базы данных, но возвращение становится пустым, когда явызвать эту функцию в другом месте.Я знаю, что это потому, что это асинхронно.

Я прочитал ответ на этот вопрос: Как заставить функцию ждать, пока не будет вызван обратный вызов, используя node.js , но я незнаю, как адаптировать мою функцию.

Любая помощь приветствуется.

Спасибо за ваше время и помощь.

1 Ответ

0 голосов
/ 10 июня 2018

Вся функция может быть упрощена до нескольких строк:

async function getAllData() {
    // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/async_function
    const datos = await MiModelo.find().exec();

    // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map
    const miLista = datos.map(dato => dato.numero)

    return miLista;
}

, которые затем можно вызвать так:

const data = await getAllData()

// or

getAllData().then(data => console.log(data))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...