Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/40.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 读取文件并在数据库中插入数据时出现NodeJS流问题_Javascript_Node.js_Express_Stream - Fatal编程技术网

Javascript 读取文件并在数据库中插入数据时出现NodeJS流问题

Javascript 读取文件并在数据库中插入数据时出现NodeJS流问题,javascript,node.js,express,stream,Javascript,Node.js,Express,Stream,我正在通过流读取文件,有一个问题需要验证CSV文件中给出的用户的电子邮件id 这里是情景 如果给定用户的电子邮件id在文件中已匹配,则不允许插入该记录 如果文本文件中有多封电子邮件,并且我插入了这些电子邮件,则会插入所有记录,这不是验证电子邮件 if(req.file.size{ row.user\u id=contractorID row.created_by=loggedUserID 芬德尔客户模式({ 其中:{ 电子邮件:row.email.toLowerCase(), 用户id:cont

我正在通过流读取文件,有一个问题需要验证CSV文件中给出的用户的电子邮件id

这里是情景

  • 如果给定用户的电子邮件id在文件中已匹配,则不允许插入该记录
  • 如果文本文件中有多封电子邮件,并且我插入了这些电子邮件,则会插入所有记录,这不是验证电子邮件
  • if(req.file.size<10485760){
    让成功=0
    让失败=0
    fs.createReadStream(req.file.path)
    .pipe(csv.parse({headers:true}))
    .on('data',行=>{
    row.user\u id=contractorID
    row.created_by=loggedUserID
    芬德尔客户模式({
    其中:{
    电子邮件:row.email.toLowerCase(),
    用户id:contractorID,
    是否已删除:0
    }
    })。然后(结果=>{
    如果(result.length>0){
    失败+=1
    //console.log(失败)
    }否则{
    console.log(“------------else-----------------”)
    CustomerSchema.create(行)。然后((客户)=>{
    成功+=1
    }).catch(错误=>{
    返回res.sendToEncode({
    状态:0,
    信息:“插入客户时出现问题。”
    })
    })
    }
    })
    }).on('end',function(){
    让s=这个;
    s、 破坏();
    }).on('close',function(){
    sendToEncode酒店({
    现状:200,
    消息:“数据导入成功。”,
    数据:{
    “成功”:成功,
    “失败”:失败
    }
    })
    }).on('error',函数(err){
    console.log(错误)
    返回res.sendToEncode({
    状态:0,
    信息:“请检查您的文件,并确保它是逗号分隔的csv文件。”
    })
    })
    }否则{
    返回res.sendToEncode({
    状态:0,
    消息:“文件大小不能超过10MB”
    })
    }
    
    有没有办法统计插入的和重复的记录


    谢谢。

    你在用什么数据库?@JDunken我在用MySQL
        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"
                    })
                }