Tengo dos puntos finales: uno que elimina el documento del producto y otro que recupera el documento.
Después de eliminar el documento a través de Id, la llamada GET api ya me devuelve el documento, incluso si se eliminó y no está presente en MongoDb.
La respuesta de la llamada DELETE devuelve { deletedCount: 1 }
Aquí el código del producto GET:
exports.getSingleProduct = (req, res, next) => { let id = req.params.id; Products.findById(id).populate({ path: 'internalColor' }).then(result => { if(result && result.visible == true) { res.status(200).json(result) } else { res.status(404).json({ message: 'product_not_found', id: id }) } }).catch(err => { res.status(404).json({ message: 'error_operation: ' + err, id: id }) }); }Aquí el código del producto DELETE:
exports.deleteDefinallySingleProduct = (req, res, next) => { let id = req.params.id; console.log(id) Products.deleteOne({ id: id }).then(result => { if(result) { res.status(200).json({ message: 'deleted_product' }); } }).catch(err => { res.status(404).json({ message: 'error_operation: ' + err }) }) }Modelo de productos
const mongoose = require('mongoose'); const Schema = mongoose.Schema; const options = { timestamps: true } const productSchema = new Schema({ name: { type: String, required: true }, description: { type: String, required: true }, price: { type: Number, required: true }, externalUrl: { type: String, required: true }, imgUrl: { type: String, required: true }, brand: { type: String, required: true }, visible: { type: Boolean, required: true } }, options); const Product = mongoose.model('Products', productSchema); module.exports = Product;Creo que el error al que te enfrentas se debe a un error tipográfico en tu código.
exports.deleteDefinallySingleProduct = (req, res, next) => { ... Products.deleteOne({ id: id }).then(result => { if(result) { // this code will run always console.log(result) // will show { n: 0, ok: 1, deletedCount: 0 }, // That is, this section of code will run always despite of delete count being 0 or more due to the request to be excecuted successfully. ... }La implementación correcta está aquí:
exports.deleteDefinallySingleProduct = (req, res, next) => { ... Products.deleteOne({ _id: id }).then(result => { ... }Esto se debe a que, de forma predeterminada, mongooose usa _id que representa la identificación del documento, a menos que cree una identificación personalizada en el esquema que no hizo.