возвращать ответ в функции в экспресс-приложении - PullRequest
0 голосов
/ 25 февраля 2019

Как мы знаем, мы должны вернуть ответ в экспресс-приложении, чтобы избежать «Невозможно установить заголовки после их отправки клиенту» ошибка.Тем не менее, в приведенном ниже коде я пытаюсь вернуть ответ, но он возвращается к нашему маршрутизатору и вызывает упомянутую ошибку.как я могу напрямую вернуть ответ в функции?

router.post("/admins", async function (req, res) {

    var newAdminObj = await newAdminObjectDecorator(req.body, res);

    var newAdmin = new Admins(newAdminObj)

    newAdmin.save(function (err, saveresult) {
        if (err) {
            return res.status(500).send();
        }
        else {
            return res.status(200).send();
        }
    });
});



// the function
var newAdminObjectDecorator = async function (entery, res) {

    // doing some kinds of stuff in here

    // if has errors return response with error code
    if (err) {
        // app continues after returning the error header response
        return res.status(500).send();
    }
    else {
        return result;
    }
}

1 Ответ

0 голосов
/ 25 февраля 2019

Никогда не запускайте ответную операцию, кроме функций контроллера.Пусть другая функция возвращает ответ и принимает решение в соответствии с ответом.

router.post("/admins", async function (req, res) {

    var newAdminObj = await newAdminObjectDecorator(req.body);

    if (newAdminObj instanceof Error) {
        return res.status(500).send()
    }

    var newAdmin = new Admins(newAdminObj)

    newAdmin.save(function (err, saveresult) {
        if (err) {
            return res.status(500).send();
        }
        else {
            return res.status(200).send();
        }
    });
});



// the function
var newAdminObjectDecorator = async function (entery) {

    // doing some kinds of stuff in here

    // if has errors return response with error code
    if (err) {
        // app continues after returning the error header response
        return err;
    }
    else {
        return result;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...