Estoy desarrollando una API en NodeJS con Express y ahora que termine todas las funciones y está todo OK quiero hacer que sea asíncrono.
En este momento el flujo es así:
Tengo una carpeta routes donde por ejemplo hay un archivo llamado productRoute.js, este archivo tiene una función como esta:
const { getProducts } = require('../services/productService');
app.get('/producto', function(req, res) {
getProducts(req, res);
})
De acá va al servicio de productos, en la carpeta services dentro de archivo llamado productService.js y a la siguiente función:
let getProducts = (req, res) => {
let pagina = Number(req.query.pagina) || 1;
let cantidad = Number(req.query.cantidad) || 10;
let query = { estado: true };
let { codigo, descripcion, nombre } = req.query;
if ( codigo ) { query.codigo = new RegExp(codigo, "i") };
if ( nombre ) { query.nombre = new RegExp(nombre, "i") };
Producto.find(query, '_id codigo descripcion nombre precioCosto precioVenta categoria marca estado imagenBase64')
.sort({nombre: 'asc'})
.populate('categoria', '_id nombre')
.populate('marca', '_id nombre')
.skip((pagina * cantidad) - cantidad)
.limit(cantidad)
.exec((err, productos) => {
if (err) {
return res.status(500).json({
ok: false,
error: 'Error interno en el servidor'
});
}
if (!productos) {
return res.status(400).json({
ok: false,
error: {
message: 'No se encontraron productos.'
}
});
}
res.json({
ok: true,
cantidad: productos.length,
entidadResultante: productos
});
})
}
Ahora tengo entendido que mis funciones (hay muchos mas y todos de la misma forma), no son asíncronas ya que no estoy utilizando async/await, como podría pasar estas funciones a asíncronas? Hay alguna librería que me ayude en esto?
Gracias!