如何在mysql数据库中插入一组对象



我遇到了一个问题,我有一个像这样的对象数组:

[
{
department_id: '6256f8ae6f749617e8167416',
employee_id: '6253ca0c6f749618a8d022af',
employee_number: '1234'
},
{
department_id: '6256f8ae6f749617e8167416',
employee_id_id: '6253ca0c6f749618a8d022af',
employee_number: '1503'
}
]

我想使用node-js和mysql将其插入数据库,所以我得到了这个脚本

Department.assignEmployeetoDepartment = (employees, result) => {
let employees_array = Object.values(rooms);
db.query(
`INSERT INTO department_employee (department_id, employee_id, employee_number) VALUES ?`,
[employees_array],
(err, res) => {
if (err) {
console.log("error: ", err);
result(err, null);
return;
}
console.log("success: ", res);
result(null, res);
}
);
};

当我使用上面的代码时,我会得到

INSERT INTO department_employee (department_id, employee_id, employee_number) VALUES '[object Object]', '[object Object]'

这由于明显的原因而不起作用。我试着把这个物体串起来我还尝试使用for循环来迭代employees数组,但它没有起作用,因为它说已经发送了头。

如何将数组(长度可能不同(存储到数据库中?提前感谢

如果您将数据设置为数组,我建议您使用的解决方案将为您提供安全服务;

const employeesData = [
[
'6256f8ae6f749617e8167416',
'6253ca0c6f749618a8d022af',
'1234'
],
[
'6256f8ae6f749617e8167416',
'6253ca0c6f749618a8d022af',
'1503'
],
];

接下来,像这样准备您的查询;

const sql = `INSERT INTO images (department_id, employee_id, employee_number) VALUES?`;

您现在可以运行下面的查询liike了;

db
.query(sql, [employeesData])
.then(rows => {
res.status(200).json({
status: "success",
message:"Data inserted successfully"
});
})
.catch(err => {
res.status(500).json({
status: "error",
error: err.message
});
});

您可以使用数组的映射方法生成要插入的值数组,如下所示,

employeesData = dataSourceArray.map ( (data) => {
return [
department_id,
employee_id,
employee_number
];
});

根据mysql-转义查询值

嵌套数组被转换为分组列表(用于大容量插入(,例如[[‘a’,'b'],['c','d']]转换为(‘a’、'b'(,('c'、'd'(

您可能想将值映射到数组,但不能通过JSON对象的数组来查询

db.query(
`INSERT INTO department_employee (department_id, employee_id, employee_number) VALUES ?`,
[employees_array.map(employee => [employee.department_id, employee.employee_id, employee.employee_number])],
(err, res) => {
if (err) {
console.log("error: ", err);
result(err, null);
return;
}
console.log("success: ", res);
result(null, res);
}
);
};