我是第一次使用nodejs。我有一个场景,其中有如下所示的json数组。 我不知道该数组中会有多少个json项目。
我已经尝试过使用循环的解决方案,但是它将多次触发查询。我不想要那个。
{"qualification":[{"degreeName":"B","domain":"p"},{"degreeName":"A","domain":"q"}]}
并且mysql查询将是这样
INSERT INTO qualification (degreeName,domain) VALUES (B,p),(A,q);
在上面的查询中,我已经明确地编写了值,但是由于我不知道会有多少个值,因此无法编写这样的值,相反,我将必须将所有值都放入变量中,然后将其传递给查询。 因此,如何检索资格数据并将其转换为变量或元组以放入mysql查询中,从而可以触发单个查询并添加多个值。
答案 0 :(得分:0)
您可以执行以下操作:您必须从动态值生成values
数组,然后传递给查询。
关键点:
?
是一个未命名的参数(占位符别名),使其成为 Parameterized Query
const mysql = require('mysql');
const con = mysql.createConnection({
host: "localhost",
user: "yourusername",
password: "yourpassword",
database: "mydb"
});
con.connect(function(err) {
if (err) throw err;
console.log("Connected!");
let sql = "INSERT INTO qualification (degreeName, domain) VALUES ?";
let values = [
['B', 'p'],
['A', 'q'],
...
]; //this is dynamic value that you can create
con.query(sql, [values], function (err, result) {
if (err) throw err;
console.log("Number of records inserted: " + result.affectedRows);
});
});
要从数据集中生成元组(values
)(假设数据将采用该格式):
const payload = {
qualification: [
{ degreeName: "B", domain: "p" },
{ degreeName: "A", domain: "q" }
]
};
const tuples = payload.qualification.map(obj => [obj.degreeName, obj.domain]);
哪个OP像这样:
[ [ 'B', 'p' ], [ 'A', 'q' ] ]