MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

maneira correta de retornar o formato json usando node ou express


Se você estiver usando expresso, não envie a mensagem do controlador . Faça um middleware cujo objetivo principal seja enviar a resposta ao cliente. Isso lhe dará o poder de definir o formato de consist resposta ao cliente.

Por exemplo, fiz o middleware de resposta assim:-
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();
};


O código acima irá gerar o formato como este.
{
  "success": true,
  "status": 200,
  "body": {
    "name": "rahul"
  }
}

Você pode usar solicitar elevador propriedade de expresso. Você pode adicionar responseObject e responseStatus do middleware anterior.

Erros também podem ser cometidos em middleware separado.

Você pode chamar por isso em suas rotas:-
const responseSender = require('./../middleware/responseSender');
 /* your rest middleware. and put responseSender middleware to the last.*/
router.get('/',/* Your middlewares */, responseSender);

Você pode chamá-lo 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);
}