Как вернуть объект результата из async.waterfall, который вызывает абстрактные функции (nodejs) - PullRequest
0 голосов
/ 07 февраля 2019

У меня есть сервер nodejs, на котором размещаются веб-службы для веб-приложения.У меня есть конечная точка маршрутов, которая попадает на функцию nodejs, которая содержит набор зависимых вызовов функций async.waterfall.Функции async.waterfall выполняются правильно (console.log показывает правильные значения результата), ОДНАКО, я не могу вернуть результат в качестве объекта ответа на вызов веб-службы.Результат не содержит ни ошибок, ни результатов.Можно ли получить доступ к результирующим объектам или значениям, которые генерирует async.waterfall?Если да, то как?

Я пытался использовать обратные вызовы на уровне module.exports, в файле nodejs выдается сообщение о том, что обратный вызов не является функцией.

var async = require ('async');
var getheaderinfo = require('../procedures/get_object_header');
var getattributes = require('../procedures/get_object_attrs');

module.exports = function job_detail(req, res) {

var lo_data = {
    "type":null,
    "code":null,
    "id":null,
    "title":null,
    "description":null,
    "attrs":[
        {
        "id":null,
        "name":null,
        "value":null
    }
    ],
};

lo_data.type = 4;
lo_data.code = req.params.job_id;

async.waterfall([

// Get job header
    function getheader(callback) {
        getheaderinfo(lo_data, function(cb_job_header){

            lo_data.id = cb_job_header.id;
            lo_data.title = cb_job_header.title;
            lo_data.description = cb_job_header.description;

            return callback(null, cb_job_header.id);

            });
    }, // Get job detailed attribution
    function getattrs(lookupid, callback) {

        getattributes(lo_data, function(cb_job_attrs){

            lo_data.attrs[0].id = cb_job_attrs[0].id;
            lo_data.attrs[0].name = cb_job_attrs[0].name;
            lo_data.attrs[0].value = cb_job_attrs[0].value;

            return callback(null, lo_data);

        })
    }
], 
    function(err, result) {
        if (result) {
            res.end(JSON.stringify(result));
        }
    } 
);
}

Я ожидаю объект-результат (или объект lo_data), чтобы его можно было передать обратно в угловое веб-приложение, которое совершило вызов, и отобразить результаты в пользовательском интерфейсе.

...