Javascript 使用节点将嵌套JSON插入MySQL

Javascript 使用节点将嵌套JSON插入MySQL,javascript,mysql,json,node.js,Javascript,Mysql,Json,Node.js,我使用Node将JSON插入MySQL,使用Node.js 这很好,直到我有嵌套的值 我的JSON示例如下: 注意:我使用上述方法进行测试,因为我想在JSON中调用API请求并返回它们 下面是我使用Node.js将其发送到MySQL的方式: 如果没有嵌套,这可以正常工作,但是嵌套的employeeDetails给了我以下错误: Error: ER_BAD_FIELD_ERROR: Unknown column 'employeeDetails' in 'field list' 我当前的表格格式

我使用Node将JSON插入MySQL,使用Node.js

这很好,直到我有嵌套的值

我的JSON示例如下:

注意:我使用上述方法进行测试,因为我想在JSON中调用API请求并返回它们

下面是我使用Node.js将其发送到MySQL的方式:

如果没有嵌套,这可以正常工作,但是嵌套的employeeDetails给了我以下错误:

Error: ER_BAD_FIELD_ERROR: Unknown column 'employeeDetails' in 'field list'
我当前的表格格式是:

字段:userID,INT 字段:id,INT 字段:版本,INT 如文件所述:

对象被转换为每个可枚举属性的key='val'对 在物体上。如果属性的值是函数,则跳过它; 如果属性的值是对象,则对其调用toString并 使用返回的值

因此不能使用嵌套对象,因为它被视为字段

而是通过对象数组执行循环:

var result2 = [{
  "id": 89304,
  "userId": 102524,
  "version": 9
}, {
  "id": 89305,
  "userId": 102522,
  "version": 99
}
}];
for(var i in result2) {
  var query = connection.query('INSERT INTO employees SET ?', result2[i],
  function(error, results, fields) {
    if (error) throw error;
  });
}
或者更简单地说,如果您的目标是使用嵌套数组完成批量插入:

var result2 = [[89304, 102524, 9], [89305, 102522, 99]];
var query = connection.query('INSERT INTO employees(id, userId, version) VALUES ?', [result2],
function(error, results, fields) {
  if (error) throw error;
});
有一种方法可以将原始嵌套对象转换为批量插入:

var result2 = result2.map(function(el){
    return [el.id, el.employeeDetails.id, el.employeeDetails.version];
});

非常感谢。我正在通过API调用检索JSON。所以为了摆脱嵌套对象,我需要首先使用json.parse来转换我的json?不客气;实际上,如果您的API已经发送了JSON,那么JSON.parse是无用的。您需要做的是将employeeDetails对象的id更改为userId,这样就不会与第一个对象发生冲突,然后将其清除,或者遍历数组和对象以使用Bulk InsertThank!我想我所困惑的是将JSON对象从我的原始嵌套类型获取到-var result2=[[89304,102524,9],[89305,102522,99];我添加了一种转换原始数组的方法;救生员!非常感谢你!
var result2 = [[89304, 102524, 9], [89305, 102522, 99]];
var query = connection.query('INSERT INTO employees(id, userId, version) VALUES ?', [result2],
function(error, results, fields) {
  if (error) throw error;
});
var result2 = result2.map(function(el){
    return [el.id, el.employeeDetails.id, el.employeeDetails.version];
});