我是MySQL和node.js(以及回調函數)的新手。我嘗試將數據插入到表B中,這取決於表A中的數據。下面是一個示例。在node.js中插入MySQL中的兩個依賴表
員工表(表一):
CREATE TABLE employees (
id int(11) NOT NULL AUTO_INCREMENT,
name varchar(50),
location varchar(50),
PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=5 ;
年齡表(表B,我不包括故意表A年齡列):
CREATE TABLE age (
id int(11) NOT NULL AUTO_INCREMENT,
index_id int(11),
age int(50),
PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=5 ;
問題:
對於插入表A的每一行,我都可以得到它的ID。我想在表B中使用id作爲index_id,並將相應的年齡信息插入到年齡表B中。當我插入多行時,會出現問題。
的例子:
我實現以下功能來實現上述目標。
var mysql = require("mysql");
var con = mysql.createConnection({
host: "localhost",
user: "root",
password: "root",
database: "sitepoint"
});
function insert_employees() {
var employees = [
{name: 'Jasmine', location: 'Australia', age: 24},
{name: 'Jay', location: 'India', age: 25},
{name: 'Jim', location: 'Germany', age: 26},
{name: 'Lesley', location: 'Scotland', age: 27}
];
var name_id;
for (var i = 0; i < 4; i++) {
var employee = employees[i];
var command = sprintf('INSERT INTO employees (name, location) VALUES ("%s", "%s");', employee.name, employee.location);
con.query(command, function (err, res) {
if (err) throw err;
name_id = res.insertId;
console.log('Last insert ID in employees:', res.insertID);
// insert age here
var age = employee.age;
var command = sprintf('INSERT INTO age (index_id, age) VALUES (%d, %d);', name_id, age);
con.query(command, function (err, res) {
if (err) throw err;
});
});
}
}
輸出:
僱員表是好的,但對於年齡表,年齡列的所有領域,而不是24,25,26,27
問題:
我認爲這個問題是在我的回調功能的濫用,但我還是不知道如何解決它。任何人都可以幫助我嗎?非常感謝!
在'var age = employee.age''後面加'';'''儘管JS支持 – mmuzahid
謝謝,它被添加了。 –
你能否提供你的DDL表 – mmuzahid