Я пытаюсь выдать ошибку, когда не выполняется запрос базы данных второй функции. Он будет отображаться в консоли сервера, но не в веб-браузере. 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));
}