Hàm findOneAndRemove () sẽ hoạt động tương ứng hơn vì nó cụ thể với phương thức lọc được truyền trong hàm .findOneAndRemove (bộ lọc, tùy chọn) để loại bỏ đối tượng được lọc. Tuy nhiên, nếu quá trình xóa bị gián đoạn bởi kết nối, retryRewrites =true sẽ cố gắng thực thi chức năng khi được kết nối.
Thông tin thêm tại đây
Khi sử dụng retryRewrites được đặt thành true sẽ yêu cầu MongoDB thử lại cùng một quá trình, điều này trên thực tế có thể giúp ngăn kết nối không thành công với cơ sở dữ liệu và hoạt động chính xác, vì vậy bạn nên bật nó lên.
Thông tin thêm tại đây
Nếu bạn đang sử dụng Mongoose 5 ^ và MongoDB 3.6 thì mã của bạn được viết tốt hơn như:
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
})
}); ;
});