Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/470.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/59.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 Parse Object Save()插入重复记录_Javascript_Mongodb_Parse Platform - Fatal编程技术网

Javascript Parse Object Save()插入重复记录

Javascript Parse Object Save()插入重复记录,javascript,mongodb,parse-platform,Javascript,Mongodb,Parse Platform,我有一个带有insert函数的解析应用程序,它在javascript数组上保存一个对象(Audit),然后保存一个子对象(DetailAudit) 问题是,有时此函数会在数据库中插入多个子记录(DetailAudit) 在插入新记录之前,我试图查询子记录是否存在,但save()方法在实际查询之前执行 插入方法如下所示: function insert(form,handler){ var audit = new Audit(); audit.set("type&

我有一个带有insert函数的解析应用程序,它在javascript数组上保存一个对象(Audit),然后保存一个子对象(DetailAudit)

问题是,有时此函数会在数据库中插入多个子记录(DetailAudit)

在插入新记录之前,我试图查询子记录是否存在,但save()方法在实际查询之前执行

插入方法如下所示:

function insert(form,handler){
    var audit = new Audit();
        audit.set("type",Type.createWithoutData(form.auditoria));
        audit.set("folio",form.folio.toUpperCase());
        audit.set("start",moment(form.inicio, 'DD/MM/YYYY').toDate());
        audit.set("end",moment(form.fin, 'DD/MM/YYYY').toDate());
        audit.set("objectives",form.objetivos);
        audit.set("goals",form.alcances);
        audit.set("audits",form.auditores);
        audit.set("auditTest",User.createWithoutData(form.auditorTest));
        audit.set("auditLeader",User.createWithoutData(form.auditorLider));
        audit.set("group",form.grupo);
        audit.save().then(function(audit){
                    var procesos = form.tab;

                    procesos.forEach(function(item) {

                        // Here I tried to query for the existence but didn't work

                        var detail = new DetailAudit();
                            detail.set("process",AuditProcess.createWithoutData(item.procesoId));
                            detail.set("clauses",item.clausulas);
                            detail.set("standar",Standar.createWithoutData(item.estandarId));
                            detail.set("area",Area.createWithoutData(item.areaId));
                            detail.set("auditor",User.createWithoutData(item.auditorId));
                            detail.set("method",item.metodologia);
                            detail.set("comment",item.comentario);
                            detail.set("questions",0);
                            detail.set("grade",0);
                            detail.set("comment",item.comentario);
                            detail.set("audit",audit);
                            detail.save({
                                success:function(detail){
                                    var pros =  new ProcessScheme();
                                        pros.set("title","EQUIPO, INSTALACIÓN Y MATERIALES")
                                        pros.set("content","....")
                                        pros.set("detail",detail)
                                        pros.save();
                                    var pros =  new ProcessScheme();
                                        pros.set("title","ENTRADAS")
                                        pros.set("content","....")
                                        pros.set("detail",detail)
                                        pros.save();
                                    var pros =  new ProcessScheme();
                                        pros.set("title","SALIDAS")
                                        pros.set("content","....")
                                        pros.set("detail",detail)
                                        pros.save();
                                    var pros =  new ProcessScheme();
                                        pros.set("title","INFORMACIÓN DOCUMENTADA")
                                        pros.set("content","....")
                                        pros.set("detail",detail)
                                        pros.save();

                                    var pros =  new ProcessScheme();
                                        pros.set("title","INDICADORES DE DESEMPEÑO")
                                        pros.set("content","....")
                                        pros.set("detail",detail)
                                        pros.save();
                                    var pros =  new ProcessScheme();
                                        pros.set("title","CONOCIMIENTOS, ENTRENAMIENTO Y HABILIDADES")
                                        pros.set("content","....")
                                        pros.set("detail",detail)
                                        pros.save();
                                    var pros =  new ProcessScheme();
                                        pros.set("title","ANÁLISIS DE RIESGO")
                                        pros.set("content","....")
                                        pros.set("detail",detail)
                                        pros.save();
                                },
                            });

                        var audits = [];
                            audits.push(User.createWithoutData(item.auditorId))
                            if(audits.length == procesos.length){
                                audit.set("audits",audits);
                                audit.save();
                            }
                    });

                    sendEmail(audit);

                    handler({status:200,msn:"Auditoría creada exitosamente",res:audit});
            }).catch(function(error){
                    handler({status:500,msn:"Error al crear usuario",res:error});
            });
}
正如我所说,在插入DetailAudit对象之前,我试图查询DetailAudit对象是否存在,但查询总是返回空结果

这个项目刚刚进入我的手中,我对这个解析服务器主题真的很迷茫,任何建议都会有帮助。

您可以创建一个新的主题,以确保集合的唯一性。这将防止重复插入

db.collection.createIndex( <key and index type specification>, { unique: true } )
您还可以使用以下命令通过解析保存多个对象:

Parse.Object.saveAll([arrayOfObjects])
Parse.Object.saveAll([arrayOfObjects])