sql查询的回调中的res.sendFile

时间:2019-02-19 17:40:46

标签: mysql node.js express callback

我希望能够在SQL查询的回调中使用res.sendFile(__dirname + '/index.html');。我不能这样做,因为它说:

  

sendFile不是一个函数。

我有SQL查询SELECT * FROM表,其回调和参数为(req, res, result),该如何在回调中实现?

下面是一些代码:

app.post('/home', (req, res) => {
username = 'myuser';
con.query(`SELECT row FROM table`, (req, res, err, result) => {
var check = result.includes(username);
if ( check == true ) {
res.sendFile(__dirname + '/err.html');
} else if (check == false) {
res.sendfile(__dirname + '/index.html');
}
});
});

1 个答案:

答案 0 :(得分:0)

当给定函数具有回调时,该回调的参数是固定的。对于con.query(),参数为(err, result),错误和结果。

您正在有效地执行的操作是将错误重命名为req,将结果重命名为res,并尝试调用res.sendFile(),而实际上是根据以下结果调用sendFile()查询,这不是问题。

您无需尝试传递req和res:这些变量已经在更高范围中定义,因此您可以访问它们。

因此您的代码段应为:

app.post('/home', (req, res) => {
    username = 'myuser';
    con.query(`SELECT row FROM table`, (err, result) => {
        var check = result.includes(username);
        if ( check == true ) {
            res.sendFile(__dirname + '/err.html');
        } else if (check == false) {
            res.sendfile(__dirname + '/index.html');
    }
    });
});