最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

尝试解决由于循环并推送到数组而导致的'ParallelSaveError'。使用Mongoose和Mongo

运维笔记admin11浏览0评论

尝试解决由于循环并推送到数组而导致的'ParallelSaveError'。使用Mongoose和Mongo

尝试解决由于循环并推送到数组而导致的'ParallelSaveError'。使用Mongoose和Mongo

我能够找到父级,甚至能够开始将数据保存到本地数据库,然后它给了我'ParallelSaveError'。我试过将.save移到循环后,由于范围没有任何反应。我不确定如何解决此错误。

.then(shiftInfo => {

        let month = moment().month() + 1,
            day = moment().date(),
            year = moment().year(), 
            today = year+"-"+month+"-"+day;

        CSshift.findOneAndUpdate({date: today}, ({
            date: today,
            shift: shiftInfo[0].thisShift[0].label,
            color: shiftInfo[0].thisShift[0].color                  
        }), {upsert: true},
                function (err, shift){
            // console.log(" Today is "+shift.shift)
        });

        // items.forEach(function(item){
        // copy.push(item);


        var persons = shiftInfo[1].persons



        persons.forEach(function(person){ //THIS IS THE LOOP THAT CAUSES THE PROBLEM

            // console.log(person.name);

            CSshift.findOne({date: today},function(err, date){
                if(err){
                    console.log(err);
                } else {


                    csshift.roster.push({ //I AM TRYING TO PUSH EACH PERSON TO THE DB UNDER CSSHIFT>ROSTER
                        name: person.name,
                        position: person.position,
                        station: person.station
                    });
                    csshift.save(function(err, roster){ //I HAVE MOVED THIS SEGMENT OUT OF THE LOOP W/O SUCCESS.
                        if(err){
                            console.log(err);
                        } else {
                            // console.log(roster);
                        }
                    })
                }
            })
        });

我也曾尝试在这里阅读类似的问题,但尝试阅读我的书并没有成功。

感谢您愿意提供帮助的人。

-亚当

回答如下:

因此,在尝试了许多不同的东西之后,我终于弄清楚了。

而不是使用for循环,我使用了for循环(我更喜欢它),然后将循环移动到find语句内,然后将.save放置在循环之外,但在find语句内。

有效:

.then(shiftInfo => {

        let month = moment().month() + 1,
            day = moment().date(),
            year = moment().year(), 
            today = year+"-"+month+"-"+day;

        var persons = shiftInfo[1].persons

        CSshift.findOneAndUpdate({date: today}, ({
            date: today,
            shift: shiftInfo[0].thisShift[0].label,
            color: shiftInfo[0].thisShift[0].color,
        }), {upsert: true},
                function (err, shift){

        });

        CSshift.findOne({date: today}, function(err, shift){

            for(var i=0; i < persons.length; i++){

                csshift.roster.push({name: persons[i].name, position: persons[i].position, station: persons[i].station})

            }
            csshift.save(function(err, roster){
                if(err){
                    console.log(err);
                } else {
                    // console.log(roster);
                }
            })
        });

现在可以正确地将数据推送到数据库。

发布评论

评论列表(0)

  1. 暂无评论