我有一个函数正在调用来登录用户,如下所示:
async function loginUser(username, password) {
let msg = {
success: 0,
message: '',
};
sql.connect(process.env.DB_CONNSTRING, function (err) {
if (err) {
res.json(err);
return;
msg.success = '0';
msg.message = 'ERR_04: Could not connect to server.';
return msg;
}
let sqlString = ` SELECT userid
FROM dbo.users
WHERE (email = @username) AND (password = @password)`;
request = new sql.Request();
request.input('username', sql.NVarChar, username);
request.input('password', sql.NVarChar, password);
request.query(sqlString, function (err, results) {
if (err) {
msg.success = '0';
msg.message = 'ERR_011: Could not connect to server.';
return msg;
}
if (results.rowsAffected[0] != 0) {
console.log(results.recordset[0]);
return results.recordset[0];
} else {
msg.success = '0';
msg.message = 'Invalid username and password combination.';
return msg;
}
});
});
}
如果查询返回结果,请注意 console.log。
我按如下方式调用该函数:
await loginUser(username, encryptedPassword)
.then((result) => {
console.log(result);
})
.catch((err) => {
msg.message = 'API Error.';
res.json(msg);
});
我还有一个 console.log()
问题在于调用的 console.log 未定义,但函数内部的控制台正在抛出数据。
我不知道我在这里缺少什么,所以任何帮助将不胜感激。
谢谢。
最佳答案
如果你不需要调用函数,可以试试这个。
let sqlString = ` SELECT userid FROM dbo.users WHERE (email ='${username}') AND (password = '${password}')`;
let conn = await sql.connect(process.env.DB_CONNSTRING)
let recordset = await conn.query(sqlString)
res.json(recordset)
关于node.js - Node.JS 中调用 SQL Server 的异步函数无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69287802/