MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

MongoDB-Fehler:Wiederholbare Schreibvorgänge mit Limit=0 können nicht verwendet werden

Die Funktion findOneAndRemove() würde entsprechender funktionieren, da sie spezifisch für die Filtermethode ist, die in der Funktion .findOneAndRemove(filter, options) übergeben wird, um das gefilterte Objekt zu entfernen. Wenn der Entfernungsprozess jedoch durch die Verbindung unterbrochen wird, wird retryRewrites=true angezeigt wird versuchen, die Funktion auszuführen, wenn eine Verbindung besteht.

Weitere Informationen hier

Wenn retryRewrites auf true gesetzt ist, wird MongoDB angewiesen, denselben Vorgang erneut zu versuchen, was tatsächlich dazu beitragen kann, fehlgeschlagene Verbindungen zur Datenbank zu verhindern und ordnungsgemäß zu funktionieren. Daher wird empfohlen, es zu aktivieren.

Mehr Infos hier

Wenn Sie Mongoose 5^ und MongoDB 3.6 verwenden, ist Ihr Code besser wie folgt geschrieben:

mongoose.connect('mongodb.....mongodb.net/test?retryWrites=true', (err) => {
if(err){
    console.log("Could not connect to MongoDB (DATA CENTER) ");
    }else{
        console.log("DATA CENTER - Connected")
    }
});// CONNECTING TO MONGODB v. 3.6

router.delete('/:productId', (req, res, next) => {
const id = req.params.productId;
Product.findOneAndRemove({ _id: id })//updated function from .remove()
    .exec()
    .then(result => {
        res.status(200).json({
       message: "Product Removed Successfuly"
     });
    })
    .catch(err => {
        console.log(err);
        res.status(500).json({
            error: err
        })
    }); ;
});