NodeJS проблема потока при чтении файла и вставке данных в БД - PullRequest
0 голосов
/ 21 февраля 2020

Я читаю файл через поток, и есть одна проблема, где мне нужно проверить идентификатор электронной почты пользователя, указанный в файле CSV.

Вот сценарий.

  1. Если идентификатор электронной почты данного пользователя уже совпадает в файле, не разрешайте вставку этой записи.
  2. Если в текстовом файле есть несколько электронных писем, и я их вставляю, тогда все записи вставляются, и это не проверяет электронную почту.
    if(req.file.size < 10485760) {
                let success = 0
                let fail = 0

                fs.createReadStream(req.file.path)
                .pipe(csv.parse({ headers: true }))
                .on('data', row => {
                    row.user_id = contractorID
                    row.created_by = loggedUserID

                    CustomerSchema.findAll({
                        where: {
                            email: row.email.toLowerCase(),
                            user_id: contractorID,
                            is_deleted: 0
                        }
                    }).then(result => {
                        if(result.length > 0) {
                            fail += 1
                            // console.log(fail)
                        } else {
                            console.log("----------else----------")
                            CustomerSchema.create(row).then((customer) => {
                                success += 1
                            }).catch(err => {
                                return res.sendToEncode({
                                    status: 0,
                                    message: "Something went wrong while inserting customers."
                                })
                            })
                        }
                    })
                }).on('end', function() {
                    let s = this;
                    s.destroy();
                }).on('close', function() {
                    res.sendToEncode({
                        status: 200,
                        message: "Data imported successfully.",
                        data: {
                            "success": success,
                            "fail": fail
                        }
                    })
                }).on('error', function(err) {
                    console.log(err)
                    return res.sendToEncode({
                        status: 0,
                        message: "Please check your file and make sure it is comma seperated csv file."
                    })
                })
            } else {
                return res.sendToEncode({
                    status: 0,
                    message: "File size can not be more than 10MB"
                })
            }

Есть ли способ подсчета вставленной и повторяющейся записи?

Спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...