【问题标题】:How to insert values from JSON data with multiple objects into rows in MySQL?如何将具有多个对象的 JSON 数据中的值插入 MySQL 的行中?
【发布时间】:2021-05-03 15:27:04
【问题描述】:

我可以将一个 JSON 数据中的一个值存储到 MySQL 数据库中,如下所示:

var data = '{"sensorvalue":"96"}'

const jsdata = JSON.parse(data);
connection.query("INSERT INTO `nodes`(`sensorvalue`) VALUES ('"+jsdata.sensorvalue+"')", (err, res) => {
    console.log("counter record inserted");  
}); 

输出:

id sensorvalue
1 96

但是,我想将值存储在包含两个或多个对象的 JSON 数据中,如下所示:

var data = '[{"sensorvalue":"96"},{"sensorvalue":"98"}]'

但是,它将它作为undefined 存储在表中的行中。

预期输出:

id sensorvalue
1 96
2 98

我以前见过this question,但我不知道这对我有什么帮助,因为在那个问题中是关于数组数组而不是具有多个对象的 JSON 数据。 请问这个怎么解决?

【问题讨论】:

  • [{"sensorvalue":"96"},{"sensorvalue":"98"}]你没看到对象数组吗?

标签: javascript mysql sql node.js json


【解决方案1】:

这是一个数组,你需要遍历它。

您也不应该将值直接替换到 SQL 中,使用参数化查询。

const jsArray = JSON.parse(data);
jsArray.forEach(jsdata =>
  connection.query("INSERT INTO `nodes`(`sensorvalue`) VALUES (?)", [jsdata.sensorvalue], (err, res) => {
    console.log("counter record inserted");
  })
);

node.js MySQL 连接器还允许您使用二维数组一次在多行中插入值。见How do I do a bulk insert in mySQL using node.js

const sensorValues = JSON.parse(data).map(el => [el.sensorvalue]);
connection.query("INSERT INTO `nodes`(`sensorvalue`) VALUES ?", sensorValues, (err, res) => {
  console.log(`${sensorValues.length} counter records inserted`);
});

【讨论】:

    猜你喜欢
    • 2020-11-19
    • 2019-09-07
    • 2020-12-11
    • 1970-01-01
    • 2019-12-22
    • 1970-01-01
    • 2019-02-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多