【发布时间】:2021-09-12 00:51:01
【问题描述】:
我的 CSV 文件包含 3 列:名字、姓氏、电子邮件。我想在数据库的用户表中添加 CSV 文件的所有有效行。例如:如果 CSV 文件有 10 行,其中第 2 行缺少名字,第 3 行包含无效电子邮件,我希望看到 8 个用户添加到数据库。从 CSV 文件添加用户后,应显示添加了多少用户以及失败了多少。
我的模特:
const User = sequelize.define(
"users",
{
first_name: {
type: Sequelize.STRING(60),
allowNull: false,
},
last_name: {
type: Sequelize.STRING(60),
allowNull: false,
},
email: {
type: Sequelize.STRING(255),
allowNull: false,
},
我的控制器:
const upload = async (req, res) => {
try {
if (req.file == undefined) {
return res.status(400).send("Please upload a CSV file!");
}
let users = [];
console.log(" __basedir", __basedir);
let path = __basedir + "/uploads/" + req.file.filename;
fs.createReadStream(path)
.pipe(csv.parse({ headers: true }))
.on("error", (error) => {
throw error.message;
})
.on("data", (row) => {
users.push(row);
})
.on("end", () => {
User.bulkCreate(users, {
validate: true,
})
.then(() => {
res.status(200).send({
message:
`Uploaded ${users.length} data successfully from ` + req.file.originalname,
});
})
.catch((error) => {
res.status(500).send({
message: `Fail to import ${users.length} into database!`,
error: error.message,
});
});
});
} catch (error) {
res.status(500).send({
message: "Could not upload the file: " + req.file.originalname,
});
}
};
我该如何解决这个问题?
【问题讨论】:
标签: node.js express sequelize.js