NodeJS进程退出不是运行SQL查询

NodeJS process exit is not running SQL query

下面的 NodeJS 应用 运行 完全没有 process.exit() 当我添加 process.exit() 它在执行后关闭 window在之后)但它没有执行 SQL 查询。

var mysql = require('mysql')

var conn = mysql.createPool({
  connectionLimit : 10000,
  host: "localhost",
  user: "root",
  password: "password",
  database: "mydatabase",
  port: 3306
});

var values = ""
for (var i=0; i < 300; i++) {
  var pub = //some randomvalue
  var hub = //some randomvalue
  values += "('"+pub + "', '" + hub + "'), "
  console.log(i);
  }
var valuesx = values.slice(0, -2)
var sql = "INSERT INTO `test` (pub, hub) VALUES "
var sqlx = sql + valuesx;
conn.getConnection(function(err, con) {
if (err) throw err
 con.query(sqlx)
 con.release();
});
process.exit(0)

以上代码没有插入到MySQL

如果我删除 process.exit(0) 它会插入 MySQL

试试这个:

conn.getConnection(function(err, con) {
if (err) throw err
 con.query(sqlx, function (err2, result) {
  if (err2) throw err;
  con.release(); 
  process.exit(0)
  // you should put these inside this callback
 })
 
});

在查询完成之前,您不需要调用 process.exit(),方法是将调用移到查询的完成回调中。您还需要在错误处理方面做一些工作,以便在出现错误时记录错误并正确清理:

conn.getConnection(function(err, con) {
    // need real error handling here too as just a throw err won't do anything useful
    if (err) {
        console.log(err);
        process.exit(1);
    }

    con.query(sqlx, function(err, data) {
        let exitCode = 0;
        if (err) {
            console.log(err);
            exitCode = 2;
        }
        con.release();
        process.exit(exitCode);
    });
});