假設我有一個需要插入到mysql表格中的json格式(或任何格式)的值列表。插入後,我需要在mysql.query調用之外暴露的result.insertId。有沒有辦法做到這一點? (請不要問我爲什麼需要這個:我知道如何解決這個問題,我只需要知道這種情況是否可行)。理想情況下,每個數組項的描述和插入標識應該打印到屏幕上。相反,我得到一個空數組。是的,我知道把console.log 裏面的的回調會實現這一點。這不是我需要的答案。是否有可能在回調之外公開插入標識?node.js mysql insert id - 如何在插入查詢之外公開insert id?
var todos = require('./todos.json');
var mysql = require('mysql');
var mysql_pool = mysql.createPool({
host : 'localhost',
user : 'myuser',
password : 'mypwd',
database : 'mydb'});
var todoArray = [];
todos.forEach(function(todo) {
mysql_pool.query("INSERT INTO todos(description) VALUES(?)", todo.description, function(err, result){
if (err) {
console.log(" Unable to insert: " + err);
throw err;
}
todoArray.push({description: todo.description, desc_id: result.insertId});
});
});
console.log(todoArray);
查詢功能是異步的,所以查詢完成之前你的console.log運行。如果你想使用這些值,你必須在回調中處理它們。你也會遇到問題,因爲你在循環中運行查詢,並且因爲它們是異步的,所以不能保證它們將以什麼順序完成。 –
@BrianGlaz你爲什麼不加這個作爲答案?可能通過指向query()方法的node.js文檔的鏈接進行擴展。 – Shadow
所以也許答案是使用同步方法呢? –