node.js - Node.JS 中调用 SQL Server 的异步函数无法正常工作

标签 node.js

我有一个函数正在调用来登录用户,如下所示:

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/

相关文章:

node.js - 无法下载 node-sass HTTP 错误 404 Not found --- Node Gyp 错误

javascript - 为什么这个 node.js + mongoose 代码不保存到数据库中?

javascript - AngularJS 中的 node_modules 目录是什么?

node.js - 检查子进程是否正在运行

javascript - 找不到 "process.env.NODE_ENV"

javascript - 发出 Axios GET 请求时无限循环 - 循环不会关闭

node.js - 如何处理 Typescript 中未分配的变量

node.js - 是否可以将 Nodejs 与 Cakephp 集成?

javascript - 如何使用 Node 检查器调试 nodejs 后端?

node.js - 使用 Express JS Router 根据用户角色进行路由