问题描述
在 egg.js 中的 mysql 插件整合了常用的增删查改功能,但是如果我们需要批量导入一批数据应该怎么办?
解决方案
我们可以利用自定义 sql 语句,app.mysql 支持 query() 方法,可以自定义 sql 语句。egg.js 中也是使用 node.js 的 mysql 插件作为依赖,可以参考 mysql 的传参方式。
特别注意,使用 ? 自定义参数时,不能忘记原有参数为数组,因此,批量导入的参数应该为三维数组。
参数示例
[ [ [...], [...], [...] ] ]
示例代码
// egg.js 框架的 Controller 或者 Service 层
// ? 为自定义参数位置
const sqlStr = 'INSERT INTO demo_table (`name`, `desc`, created_at) values ?';
// 导入数据,二维数组
const importData = [
['小红', '班长', this.app.mysql.literals.now,],
['小明', '学习积极', this.app.mysql.literals.now,]
];
// 特别注意该参数,参数还需要补充一层[],是三维数组
const result = await this.app.mysql.query(sqlStr, [importData]);
// result.affectedRows => 2