【发布时间】: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