带有异步的NodeJS和SQL

时间:2018-08-13 19:48:38

标签: mysql node.js

我正在尝试对NodeJ使用SQL查询,但是异步部分确实让我感到困惑。当我打印退货时,它变得“未定义”。我该如何同步呢?

$(".modal-body input").val("")
(function () {
    $(".modal").on("hidden.bs.modal", function () {
        $(this).removeData();
    });
});

谢谢!

2 个答案:

答案 0 :(得分:1)

因此,您的答案目前是一个承诺。您必须阅读有关Async和Await的信息,以进行更多的同步JS。

大多数用于NodeJS的JS当前是异步的。下面是示例的重写版本,正确使用了数据库的回调方法。

function callback (err, results, fields) {
    if (err) {
        console.log(err);
        return err;
    }
    console.log(results, fields);
    return results;
};

function SQL_test(blos) {
    DB
        .query("Select profesor_id from materiador where materia_id = '"+blos+"';", callback);
}
SQL_test(1);

要同步执行相同的操作,您还必须具有外部级别的承诺,否则Async和Await将无法按您希望的方式工作。 javascript没有真正的同步方式来处理此问题,因为它无需等待响应即可执行。

答案 1 :(得分:0)

function sqlTest(blos) {
  return new Promise((resolve, reject) => {
    DB.query(
      `Select profesor_id from materiador where materia_id = '${blos}';`,
      (err, results) => {
        if (err) return reject(err)
        resolve(results)
      }
    );
  }
)

sqlTest(1)
  .then(console.log)
  .catch(console.error)