【问题标题】:How to add multiple users at once by upload a CSV file in nodejs?如何通过在nodejs中上传CSV文件一次添加多个用户?
【发布时间】:2021-08-15 23:24:56
【问题描述】:

我有一个用户模型。我创建了一个控制器来添加一个新用户。但我想通过上传 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),
      },
    })

Controller.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"})
    }
}

我该怎么做?

【问题讨论】:

    标签: mysql node.js express sequelize.js


    【解决方案1】:

    您可以将问题分为两部分:

    1 Parse csv 文件上传:你可以参考一个类似的问题: How can I parse data from a csv file uploaded by a user in node/express?

    您可以使用此节点模块来解析 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 中读取数据后,您可以重复使用您的逻辑,通过循环数据将用户插入数据库。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-01-21
      • 2016-10-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多