mysql - 如何通过在nodejs中上传CSV文件一次添加多个用户?
问题描述
我有一个用户模型。我创建了一个控制器来添加一个新用户。但我想通过上传 CSV 文件一次添加多个用户。新用户存储在数据库中。CSV 文件包含 3 列:first_name、last_name、email。我怎么解决这个问题?
模型.js
const User = sequelize.define(
"users",
{
id: {
type: Sequelize.BIGINT(20),
allowNull: false,
autoIncrement: true,
primaryKey: true,
},
first_name: {
type: Sequelize.STRING(60),
},
last_name: {
type: Sequelize.STRING(60),
},
email: {
type: Sequelize.STRING(255),
},
})
控制器.js
const addUser = async(req, res) => {
try {
console.log(req.body);
let { first_name, last_name, email } = req.body
const newUser = await User.create({
first_name,
last_name,
email
})
return res.status(201).json({ error: false, msg: "Add Successfuly", data: newUser})
} catch (error) {
return res.status(500).json({ error: true, msg: "Server Error"})
}
}
我怎样才能做到这一点?
解决方案
您可以将问题分解为两个:
1 解析上传的csv文件:可以参考类似的问题: 如何解析用户在node/express中上传的csv文件中的数据?
您可以使用此节点模块来解析 csv 文件。https://www.npmjs.com/package/csvtojson
例如,您在请求对象中有文件名用户。
const csv=require('csvtojson');
csv()
.fromString(req.files.users.data.toString('utf8'))
.on('json', (user) => {
console.log(user);
})
.on('done', () => {
console.log('done parsing');
});
2 从上传的 csv 读取数据后,您可以重用您的逻辑,通过循环数据将用户插入数据库。
推荐阅读
- java - 将 POI SXSSFWorkbook 流式传输到 servlet 输出流
- xml - 从 XML 有效负载中过滤掉节点
- android - ndk 在 android.mk 文件中构建时出现错误
- vba - 如何使用 VBA 调用 Microsoft Graph API?
- java - 在多个 map() 和 reduce() 调用之间共享数据
- wordpress - Wordpress 导入错误(默认导入工具)
- java - 如何从 CLI 将 Gradle 任务拆分为纯编译和纯执行任务?
- npm - 在安装软件包后运行 docker compose 时,我不断收到“找不到模块”错误
- python - 如何在 dynamodb 中使用 put_item 在条件表达式中提及地图/字典属性
- android - 如何在 Videoview 上制作圆形 GLSurfaceView?