Выполнение встроенного оператора функции в последовательности node.js - PullRequest
0 голосов
/ 23 мая 2018

Я относительно новичок в стеке MEAN и все еще в фазе обучения.

Попытка создать простое приложение, которое отображает список записей поиска во внешнем интерфейсе вместе с информацией о общее количество найденных записей и количество различных имен клиентов в наборе данных.
Я написал отдельную функцию в файле node.js для возврата общего и различного количества, но я полагаю, что из-за асинхронного характера ответ (код 3 ниже) выполняется перед выполнением кода для подсчета отличного (код 2 ниже),Из-за этого значения отчетливое число всегда равно 0.

Ниже приведен мой код

function xyz(req, res, next)
{
     //Code 1 - Get the data 
     query = Recs.find({ $and: searchQuery });

    //Code 2 - Query to get distict cust name count
    query.find().distinct('custName',function (err, distinct_cust_count) {
        cust_count = distinct_cust_count.length;
    });

    //Code 3 - Response
    if (query == null) res.send({total: 0,c_count:0});
    else query.count(function(err, total) { 
            res.send({total: total,c_count:cust_count}); 
    });    

}

Пожалуйста, предложите, как я могу получить Код 2 , который всегда будет выполняться до Код 3 .Я видел несколько примеров, использующих обратные вызовы, но это использует разные функции не для сегмента кода в функции.

1 Ответ

0 голосов
/ 23 мая 2018

Вот простой способ.

function xyz(req, res, next)
{
     //Code 1 - Get the data 
     query = Recs.find({ $and: searchQuery });

    //Code 2 - Query to get distict cust name count
    query.find().distinct('custName',function (err, distinct_cust_count) {
        cust_count = distinct_cust_count.length;

        //Code 3 - Response. This will not be executed until the previous query is completed.
        if (query == null) res.send({total: 0,c_count:0});
        else query.count(function(err, total) { 
            res.send({total: total,c_count:cust_count}); 
        });   
    }); 
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...