【问题标题】:insert json object with array inside into mysql table using node JS使用节点JS将带有数组的json对象插入到mysql表中
【发布时间】:2020-05-21 14:30:34
【问题描述】:

我使用 aws 作为我的后端,并且我有几个 aws lambda 函数(用节点 JS 编写)用于将传入的 json 数据插入到 amazon RDS(mysql) DB。下面是我的节点js代码

var mysql = require('mysql');
var config = require('./config.json');
var pool = mysql.createPool({.../});

exports.handler = (event, context, callback) => {
  let inserts = [event.unitID, event.timestamp, event.frequency];
  pool.getConnection(function(error, connection) {
    connection.query({
      sql: 'INSERT INTO device_data (device_id, timestamp, frequency) VALUES (?, ?, ?);',
      timeout: 40000, 
      values: inserts
    }, function(error, results, fields) {
      connection.release();
      if (error) callback(error);
      else callback(null, results);
    });
  });
};

这是传入的json数据

"unitID": "arena-MXHGMYzBBP5F6jztnLUdCL",
  "timestamp": 1580915318000,
  "version": "1.0.0",
  "frequency": [
    60.0033,
    60.004,
    60.0044,
    60.0032,
    60.005,
    60.005,
    60.0026,
    60.0035,
    60.0036,
    60.0053
  ]
}

我的频率有一组值,我无法处理将其插入数据库。 有什么建议。谢谢

【问题讨论】:

  • 我可以像这样从频率数组中获取一个值 ``` let inserts = [ event.unitID, event.timestamp, event.frequency[0] ]; ```
  • 这取决于你想做什么。一种解决方案可能是为阵列中的所有频率创建一个表,然后在该新表和您的“设备数据”之间创建一个关系。另一种解决方案可能是将所有读数映射为具有相同的 device_id、时间戳,并且仅更改频率。
  • @malarres 是的,我正在尝试实施第二种解决方案(将所有读数映射为具有相同的 device_id、时间戳并且仅更改频率)有什么提示吗?谢谢
  • 见下面我的回答。你从哪里得到你的数据?活动?
  • 是的,处理程序是 lambda 函数中处理事件的方法。

标签: mysql node.js json aws-lambda node-mysql


【解决方案1】:

如果您的数据位于名为 json 的变量中:

console.log(json.frequency.map( (freq) =>[json.unitID,json.timestamp,freq] ))

然后您可以调整它以使您的 sql 适合一个字符串,该字符串将 VALUES (?,?,?) 替换为您想要的输出。例如:

const values = json.frequency.map( (freq) => [json.unitID,json.timestamp,freq] );
const sqlString = `'INSERT INTO device_data (device_id, timestamp, frequency) VALUES ${values.map( (row) => `(${row[0]},${row[1]},${row[2]})` ).join(',')}`

在你的代码中:

connection.query({
      sql:sqlString
[...]

【讨论】:

猜你喜欢
  • 2017-10-04
  • 2021-05-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-10-18
  • 2019-02-04
  • 1970-01-01
相关资源
最近更新 更多