Как получить вторую ошибку от отклонения, чтобы показать в браузере при использовании next () (koa. js) - PullRequest
0 голосов
/ 06 января 2020

Я пытаюсь выдать ошибку, когда не выполняется запрос базы данных второй функции. Он будет отображаться в консоли сервера, но не в веб-браузере. CheckUsername выбрасывает ошибку на страницу клиентского интерфейса, но CheckEmail не ... Я не уверен, почему это так, но я думаю, что это как-то связано с функцией next (). Я только спрашиваю, потому что передний конец нуждается в коде err.response.status, чтобы показать, что электронная почта взята. Пожалуйста, задавайте мне любые вопросы, которые у вас есть. Я использую express, с маршрутизацией коа.

async CheckUsername(ctx, next) {
        return new Promise((resolve, reject) => {
        let query = "select * from user where user_name = ?";
            dbConnection.query(
                {
                    sql: query,
                    values: [ctx.request.body.user_name]
                }, (error, tuples) => {
                    if (error) {
                        ctx.body = {
                            Username: {
                                code: 409,
                                message: "Username taken",
                            },
                            available: false
                        };
                        ctx.status = 409;
                        return reject(error);
                    }
                    ctx.body = tuples;
                    if(tuples == "") {
                        next();
                        return reject()
                    } else {


                    // This returns to the browser and the console
                        ctx.status = 409;
                        ctx.body = {
                            Username: {
                                code: 409,
                                message: "Username taken",
                            },
                            available: false
                        }
                    return reject();
                    }
                });
            }).catch(err => console.log(err));
    }

    async CheckEmail(ctx, next) {
        return new Promise((resolve, reject) => {
        let query = "select user_id from user_info where email_address = ?";
            dbConnection.query(
                {
                    sql: query,
                    values: [ctx.request.body.email_address]
                }, (error, tuples) => {
                    if (error) {
                        ctx.body = {
                            Email: {
                                code: 409,
                                message: "Email taken",
                            },
                            available: false
                        };
                        ctx.status = 409;
                        return reject(error);
                    }
                    ctx.body = tuples;
                    if(tuples == "") {
                        next();
                        return reject()
                    } else {


                    // This does not return to the browser, only the server console...
                        ctx.status = 409;
                        ctx.body = {
                            Email: {
                                code: 409,
                                message: "Email taken",
                            },
                            available: false
                        }
                        return reject();
                    }
                });
            }).catch(err => console.log(err));
    }
...