【问题标题】:Can't get express.js response无法获得 express.js 响应
【发布时间】:2018-11-03 14:47:54
【问题描述】:

我试图根据其内容以不同的方式处理服务器响应,但我什至无法运行与响应数据无关的东西。

这是我在 jQuery 中的请求:

function Register() { var form = $('#signup-form') $.post("http://localhost:3000/register", form.serialize(), (data) => console.log("1")) .done((data) => console.log("2")) .fail((data) => console.log("3")) .always((data) => console.log("4")); }

快递:

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 => {})
})

我做错了什么?

【问题讨论】:

  • 我不知道这个sql.Request 对象是如何工作的,但是代码的else 部分从未将任何内容发送回响应中似乎有点可疑。如果你只是想表明它成功了,至少使用res.sendStatus(200)
  • @Jeto 我应该把它插入else 吗?另外,我很确定sql.Request 没有问题,至少它的query() 方法没有问题,因为在这种情况下,它会同时执行console.log() 和下一个查询。
  • 是的,无论如何你都应该回复。

标签: javascript jquery express


【解决方案1】:

发回状态以完成请求,否则它将保持打开状态。在你的catch块中插入一个400状态响应,让前端知道请求失败并进入fail()函数:

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}')`);
            res.status(200).send();  // here add a status of 200 to signal success
        }
    }).catch(result => {
       res.status(400).send();  // send also a 400 status response to signal failure
    })
})

【讨论】:

    猜你喜欢
    • 2018-01-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-25
    • 2021-07-18
    • 2011-04-27
    • 2018-02-20
    • 2020-12-11
    相关资源
    最近更新 更多