findoneandupdate и дубликат ошибки 11000 - PullRequest
0 голосов
/ 17 марта 2019

привет, у меня проблема с запуском моего кода, потому что он говорит E11000 повторяющийся набор ошибок ключа

router.put('/:city/edit',isAdminCheck, async function(req,res){
var query = req.params.city;
var update = {region:req.body.region,country:req.body.country,image:req.body.image,flag:req.body.flag,languages:req.body.languages,currencies:req.body.currencies,city:req.body.city};
CityList.findOneAndUpdate(query,update,{upsert:true}, function(error){
    if(error){
        if(error.code === 11000){
            CityList.findOneAndUpdate(query,update,{upsert:true}, function(error){
                if(error){
                    console.log(error);
                }else{
                    res.redirect("/" + req.params.cty);
                }
            })
        }
    }else{
        res.redirect("/" + req.params.city);
    }
})

});

1 Ответ

0 голосов
/ 17 марта 2019

Ваш запрос не верный.Это должно быть

var query = {city: req.params.city};

И вы делаете одно и то же обновление дважды.Вы должны позвонить только один раз.

CityList.findOneAndUpdate(query,update,{upsert:true}, function(error){
    if(error){
        // handle error
        }
    }else{
        res.redirect("/" + req.params.city);
    }
})
...