Функция findOneAndRemove () будет работать более соответствующим образом, поскольку она специфична для метода фильтрации, передаваемого в функцию .findOneAndRemove (filter, options) для удаления отфильтрованного объекта.Тем не менее, если процесс удаления прерывается соединением, retryRewrites = true попытается выполнить функцию при подключении.
Дополнительная информация здесь
При использовании retryRewrites, установленного в true, велит MongoDB повторить тот же процесс еще раз, что фактически может помочь предотвратить сбой соединений с базой данных и работать правильно, поэтому рекомендуется включить его.
Дополнительная информация здесь
Если вы используете Mongoose 5 ^ и MongoDB 3.6, ваш код лучше написать так:
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
})
}); ;
});