使用节点 JS 将带有数组的 json 对象插入到 mysql table 中
insert json object with array inside into mysql table using node JS
我使用 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
]
}
我的频率有值数组,我无法处理它以插入数据库。
有什么建议么。谢谢
如果您的数据位于名为 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
[...]
我使用 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
]
}
我的频率有值数组,我无法处理它以插入数据库。 有什么建议么。谢谢
如果您的数据位于名为 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
[...]