Javascript 无法获取express.js响应
我试图根据服务器响应的内容以不同的方式处理它,但我甚至不能运行与响应数据无关的东西 以下是我在jQuery中的请求: 功能寄存器{ var form=$'signup-form' $.posthttp://localhost:3000/register,form.serialize,data=>console.log1 .donedata=>console.log2 .faildata=>console.log3 .alwaysdata=>console.log4; } 简而言之:Javascript 无法获取express.js响应,javascript,jquery,express,Javascript,Jquery,Express,我试图根据服务器响应的内容以不同的方式处理它,但我甚至不能运行与响应数据无关的东西 以下是我在jQuery中的请求: 功能寄存器{ var form=$'signup-form' $.posthttp://localhost:3000/register,form.serialize,data=>console.log1 .donedata=>console.log2 .faildata=>console.log3 .alwaysdata=>console.log4; } 简而言之: rota.p
rota.post('/register', (req, res) => {
const name = req.body.name;
const age = req.body.age;
const pass = sha256(req.body.pass);
const request = new sql.Request();
request.query(`SELECT CAST(CASE WHEN EXISTS(SELECT * FROM Usuario WHERE username = '${name}') THEN 1 ELSE 0 END AS BIT) AS re`).then(
result => {
if (result.recordset[0].re == true) {
console.log("usuário já registrado");
res.send("1");
} else {
request.query(`INSERT INTO Usuario(username, userage, userpass) VALUES('${name}', '${age}', '${pass}')`);
}
}).catch(result => {})
})
我做错了什么?返回状态以完成请求,否则它将保持打开状态。在catch块中插入400状态响应,让前端知道请求已失败,并进入fail函数:
request.query`SELECT CASTCASE WHEN EXISTSSELECT*FROM Usuario,其中username='${name}',然后1或0结束位为re`。然后
结果=>{
如果result.recordset[0].re==true{
控制台:洛古苏里奥·查多;
第1项决议;
}否则{
查询`插入USUARIONUSERNAME、userage、userpass值'${name}','${age}','${pass}';
res.status200.send;//此处添加状态200表示成功
}
}.catchresult=>{
res.status400.send;//还发送400状态响应以响应信号故障
}
}我不知道这个sql.Request对象是如何工作的,但代码的其他部分从未将任何内容发送回响应,这似乎有点可疑。如果您只是想表示它成功,请至少使用res.sendStatus200。@Jeto我应该将其插入到else中吗?另外,我很确定sql.Request没有问题,至少在其查询方法上没有问题,因为在这种情况下,它同时执行console.log和下一个查询。是的,在任何情况下都应该发送响应。