MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

modo corretto per restituire il formato json usando node o express

Se utilizzi express, non inviare il messaggio dal controllore . Crea un middleware il cui scopo principale sia inviare la risposta al client. Questo ti darà il potere di impostare il formato di consist risposta al cliente.

Ad esempio, ho creato il middleware di risposta in questo modo:-

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();
};

Il codice sopra genererà il formato in questo modo.

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

Puoi utilizzare richiedi uplifter proprietà di espresso. Puoi aggiungere responseObject e responseStatus dal middleware precedente.

Gli errori possono essere commessi anche in un middleware separato.

Puoi chiamare in questo modo nelle tue rotte:-

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

Puoi chiamarlo con:-

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);
}