Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/472.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何捕获节点mySQL查询中的错误?_Javascript_Mysql_Node.js - Fatal编程技术网

Javascript 如何捕获节点mySQL查询中的错误?

Javascript 如何捕获节点mySQL查询中的错误?,javascript,mysql,node.js,Javascript,Mysql,Node.js,我的应用程序使用nodejs和mysql。我以以下方式执行DB查询: try { myDB.query(SQL, object, (err, res) => { if (err) throw err ... } } catch (err) { console.log(err.message) } 但这是不可行的,因为异步queryfunc。那么,如何捕获回调中可能发生的错误呢?请提供帮助。您不能将抛出带有回调的异步代码内部。您必须使

我的应用程序使用nodejs和mysql。我以以下方式执行DB查询:

try {
    myDB.query(SQL, object, (err, res) => {
        if (err) throw err
        ...
    }
} catch (err) {
    console.log(err.message)
}

但这是不可行的,因为异步
query
func。那么,如何捕获回调中可能发生的错误呢?请提供帮助。

您不能将
抛出带有回调的异步代码内部。您必须使用异步错误处理:

function makeQuery(callback) {
  myDB.query(SQL, object, (err, res) => {
    if (err) {
      callback(err)

      return
    }

    ...
  }
}
由调用方提供一个合适的回调函数,该函数接受
(err,response)
或类似的内容。调用者还负责拦截、处理或转发任何和所有错误

如果使用承诺驱动的代码,则可以使用
.catch()
异步
函数和
等待
函数,这些函数将在
try
中工作。是一个很好的Promise驱动的数据库驱动程序

然后您的代码如下所示:

let result = await myDB.query(SQL, object)

这显然要干净得多。

您不能
在带有回调的异步代码中抛出
。您必须使用异步错误处理:

function makeQuery(callback) {
  myDB.query(SQL, object, (err, res) => {
    if (err) {
      callback(err)

      return
    }

    ...
  }
}
由调用方提供一个合适的回调函数,该函数接受
(err,response)
或类似的内容。调用者还负责拦截、处理或转发任何和所有错误

如果使用承诺驱动的代码,则可以使用
.catch()
异步
函数和
等待
函数,这些函数将在
try
中工作。是一个很好的Promise驱动的数据库驱动程序

然后您的代码如下所示:

let result = await myDB.query(SQL, object)

这显然要干净得多。

您可以使用以下示例:

try {
  connection.query('SELECT * FROM ??',[Table], function (err) {
    if (err) console.error('err from callback: ' + err.stack);
  });
} catch (e) {
  console.error('err thrown: ' + err.stack);
}
比如说。如果“表”不存在,您将得到以下响应:

'Table' doesn't exist
编辑:


@tadman所说的是正确的,
如果您使用if(err)throw err
,您只会生成一个异常错误,并且您会丢失所需的内容。

您可以使用以下示例:

try {
  connection.query('SELECT * FROM ??',[Table], function (err) {
    if (err) console.error('err from callback: ' + err.stack);
  });
} catch (e) {
  console.error('err thrown: ' + err.stack);
}
比如说。如果“表”不存在,您将得到以下响应:

'Table' doesn't exist
编辑:


@tadman所说的是正确的,
如果您使用if(err)throw err
,您只会生成一个异常错误,您将丢失所需的内容。

谢谢!这对我帮助很大!谢谢这对我帮助很大!