Хороший способ писать подзапросы в pg-обещании - PullRequest
2 голосов
/ 11 апреля 2019

В том случае, если мне нужно выполнить больше запросов в одном API, в каком методе я должен действовать? Это лучший способ писать подзапросы внутри основных запросов без использования db.task или db.tx, иначе мне придется использовать эти методы,как показано ниже

function userChangePassword(req, res) {
    const changePwd = req.swagger.params.body.value;

    const token = req.headers.authorization;
    token.replace('Bearer ', '');
    const decoded = jwt_decode(token);

    const newpass = changePwd.newPassword;
    const user_id = decoded.userId;

    const userSel = `select * from xx."yy" where "userId" = '${user_id}' AND "status" = 1`;
    const updatePwd = `update xx."yy" set "password" = '${newpass}' where "userId" = '${user_id}' `;

    db.query(userSel).then((usrResult) => {
            if (usrResult.length > 0) {
                db.query(updatePwd).then(() => {
                    res.send(response.success("The password has been changed successfully", []));
                });
            } else {
                res.send(response.success("The password has not changed successfully", []));
            }
        })
        .catch((err) => {
            if (util.isError(err)) res.error('NotFoundError', err); // return 404
            else res.error('InternalServerError', err); // else 500
        });
}    

пожалуйста, помогите мне найти решение этой путаницы .. Спасибо.

1 Ответ

2 голосов
/ 11 апреля 2019

Если у вас есть зависимость между запросами, то вы должны использовать методы task / tx. В противном случае вы можете объединить запросы в один, используя helpers.concat , и выполнить их как один запрос, что будет быстрее. И вы можете использовать методы multi / multiResult , если вы ожидаете возврата данных из вашего мультизапроса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...