我第一次使用nodejs。我有一个场景,我有 json 数组,如下所示。 我不知道该数组中有多少个 json 项。
我尝试过使用循环的解决方案,但它会多次触发查询。我不希望这样。
{"qualification":[{"degreeName":"B","domain":"p"},{"degreeName":"A","domain":"q"}]}
mysql查询会是这样的
INSERT INTO qualification (degreeName,domain) VALUES (B,p),(A,q);
在上面的查询中,我显式地写入了值,但由于我不知道会有多少值,所以我无法编写这样的值,而是必须将所有值放入变量中,然后将其传递给查询。 那么我如何检索资格数据并将其转换为变量或元组以放入 mysql 查询中,以便我可以触发单个查询并添加多个值。
最佳答案
您可以执行以下操作:您必须从动态值生成 values
数组并传递给查询。
Key point:
?
is a unnamed parameter (placeholder alias) to make it Parameterised 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);
});
});
从数据集中生成元组(值
)(假设数据采用该格式):
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' ] ]
关于mysql - 有没有办法在nodejs中的mysql 'insert'查询中动态设置多个VALUES?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57745800/