res.sendFile在sql查询的回调中

问题描述 投票:0回答:1

我希望能够在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');
}
});
});
mysql node.js express callback
1个回答
0
投票

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

你实际做的是将错误重命名为reqres的结果,并试图调用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');
    }
    });
});
© www.soinside.com 2019 - 2024. All rights reserved.