Py学习  »  DATABASE

javascript mysql插入多个值

user829174 • 4 年前 • 295 次点击  

我正在尝试将接收到的request.body结构插入数据库

request.body = [{
        "createdAt": "2019-03-11T08:03:11.438",
        "deviceType": "type1",
        "deviceSerial": "123",
        "metricName": "metric1",
        "metricValue": "29"
    },
    {
        "createdAt": "2019-03-11T08:03:11.442",
        "deviceType": "type2",
        "deviceSerial": "234",
        "metricName": "metric2",
        "metricValue": "29"
    },
    {
        "createdAt": "2019-03-11T08:03:11.442",
        "deviceType": "type3",
        "deviceSerial": "345",
        "metricName": "metric3",
        "metricValue": "165"
    }
]

正在尝试将request.body设置到数据库中:

var mysql = require('node-mysql');
var conn = mysql.createConnection({
    ...
});

var sql = "INSERT INTO Test (created_at, device_type, devices_serial, metric_name, metric_value) VALUES ?";

var values = request.body // <- Here it the problem, I guess

conn.query(sql, [values], function(err) {
    if (err) throw err;
    conn.end();
});

我在试着理解如何构建 var values 因此它将符合以下格式:

var values = [
    ['2019-03-11T08:03:11.438', 'type1', '123', 'metric1', '29'],
    ['2019-03-11T08:03:11.438', 'type2', '234', 'metric2', '29'],
    ['2019-03-11T08:03:11.438', 'type3', '345', 'metric3', '165'],
];
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/51089
 
295 次点击  
文章 [ 3 ]  |  最新文章 4 年前
Terry Lennox
Reply   •   1 楼
Terry Lennox    5 年前

这样的做法应该管用:

var conn = mysql.createConnection({
    ..
});

let request = {};
request.body = [{
    "createdAt": "2019-03-11T08:03:11.438",
    "deviceType": "type1",
    "deviceSerial": "123",
    "metricName": "metric1",
    "metricValue": "29"
  },
  {
    "createdAt": "2019-03-11T08:03:11.442",
    "deviceType": "type2",
    "deviceSerial": "234",
    "metricName": "metric2",
    "metricValue": "29"
  },
  {
    "createdAt": "2019-03-11T08:03:11.442",
    "deviceType": "type3",
    "deviceSerial": "345",
    "metricName": "metric3",
    "metricValue": "165"
  }
];

// Convert to array of arrays. 
const values = request.body.map((obj) => Object.values(obj));

const sql = "INSERT INTO Test (created_at, device_type, devices_serial, metric_name, metric_value) VALUES ?";

conn.query(sql, [values], function(err) {
    if (err) throw err;
    conn.end();
});
AmenzO
Reply   •   2 楼
AmenzO    5 年前

编辑 :试试这个

    var mysql = require('node-mysql');
    var conn = mysql.createConnection({
        ...
    });

    var sql = "INSERT INTO Test (created_at, device_type, devices_serial, metric_name, metric_value) VALUES ?";

    var values = request.body.map(Object.values);

    conn.query(sql, [values], function (err) {
        if (err) throw err;
        conn.end();
    });
Aman B
Reply   •   3 楼
Aman B    5 年前

可以将对象值作为数组

var values = request.body.map(r=>  Object.values(r));