以下文件可用: router.js
router.post('/database/sqlBilder', jsonParser, function (request, response) {
if (!request.body) return response.sendStatus(400);
sqlBilder(request.body.code, request.body.table, [request.body.login, request.body.password]);
});
handler.js
let user = JSON.stringify({ 'code': code,
'table': table,
'login': args[0].value,
'password': args[1].value });
let response = await fetch('./database/sqlBilder', {
method: 'POST',
body: user,
headers: {
'Content-Type': 'application/json',
'Accept': 'application/json'
}
})
if (response.ok) {
let text = response.json();
console.log(text);
alert("Запрос выполнен: " + response.status);
} else {
alert("Ошибка HTTP: " + response.status);
}
sqlbuilder.js
query = `SELECT * FROM ${table} WHERE`;
// ...
query += ` id = '${args[0]}';`;
pool.execute(query, (err, results)=>{
if (err) {
throw err;
}
else{
console.log('Из базы получена запись');
console.log(results[0].id);
}
return JSON.stringify({ 'id': results[0].id});
});
底线是这样的:在 html 页面上调用 AJAX 请求,将数据传输给它,请求转到处理程序,在处理程序中对其进行解析并将其数据转到导入的函数,在那里执行一个 sql 查询到数据库,它成功地向我发出收到正确 ID 的信号。到目前为止,一切正常。据我了解,我不仅要执行一个sql查询,还要返回它的结果,当然,数据没有返回,我看到了Ошибка HTTP: 500
。
我想知道如何返回并接受这个请求的结果?
这不是我的问题的完整解决方案,但比没有解释如何解决问题的评论更有帮助。
首先需要修改handler文件中的代码如下:
其次,在后处理程序内部的路由器文件中,我在响应中添加了返回值:
目前,只有当我立即编写以下内容而不是最后一行时,我才能成功获得 ajax 请求的结果:
不幸的是,到目前为止,尽管我在路由器上声明了一个异步函数,并在 sqlBilder 本身上尝试了一个异步函数,但我仍然无法使用 sqlBilder 获得类似的响应...