使用node.js在MySQL中插入两个依赖表

我是MySQL和node.js(以及callback)的新手。 我尝试将数据插入到表B中,这取决于表A中的数据。下面是一个示例。

员工表(表A):

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。 我想使用id作为表B中的index_id,并将相应的年龄信息插入到年龄表B.当我有多行插入时会出现问题。

例子

我实现以下function来实现上述目标。

 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; }); }); } } 

输出

在这里输入图像描述

在这里输入图像描述

雇员表是好的,但是对于年龄表,所有领域的年龄栏是27 ,而不是24,25,26,27

问题

我认为问题在于我的滥用callbackfunction,但我仍然不知道如何解决它。 任何人都可以帮我吗? 非常感谢!

 var employee = employees[i]; 

将上面的行更改为下面的内容,以便variables员工具有正确的范围:

 let employee = employees[i]; 

将以下内容添加到脚本的开头,以便让作品:

 'use strict';