sql >> Base de Datos >  >> NoSQL >> MongoDB

forma correcta de devolver el formato json usando node o express

Si está utilizando express, no envíe el mensaje desde el controlador . Cree un middleware cuyo objetivo principal sea enviar la respuesta al cliente. Esto le dará el poder de configurar el formato de consistir respuesta al cliente.

Por ejemplo, he creado el middleware de respuesta de esta manera:-

module.exports = function(req, res, next) {
  const message = {};
  message.body = req.responseObject;
  message.success = true;
  message.status = req.responseStatus || 200;
  res.status(message.status).send(message);
  return next();
};

El código anterior generará el formato como este.

{
  "success": true,
  "status": 200,
  "body": {
    "name": "rahul"
  }
}

Puedes usar solicitar uplifter propiedad de expreso. Puede agregar responseObject y responseStatus del middleware anterior.

Los errores también se pueden cometer en un middleware separado.

Puedes llamar por esto en tus rutas:-

const responseSender = require('./../middleware/responseSender');
 /* your rest middleware. and put responseSender middleware to the last.*/
router.get('/',/* Your middlewares */, responseSender);

Puedes llamarlo por:-

exports.groups_Get_All = (req, res, next) => {
    Group.find()
        .exec()
        .then(docs => {
            const response =
                docs.map(doc => {
                    return {
                        gname: doc.gname,
                        employee: doc.employeeId,
                        _id: doc._id,
                        createdAt: doc.createdAt
                    };
                })

            req.responseObject = response; // This will suffice
            return next()
        })
        .catch(next);
}