2016-09-21 13 views
2

Я хотел бы добавить body свойство объекта ответа Express.js', который будет вызываться каждый раз, когда send method is called, я сделать это, добавив следующий код в качестве промежуточного слоя,Express.js- добавить тело ответа

но по какой-то причине, когда я звоню res.send, эта функция вызывается дважды (один раз, когда тело является объектом, а во втором - тем же объектом, но является строкой). 1.Что это называется дважды? 2.why и когда он преобразуется в строку?

applicationsRouter.use(function (req, res, next) { 
     var send = res.send; 
     res.send = function (body) { 
      res.body = body 
      send.call(this, body); 
     }; 
     next(); 
    }); 

ответ

4

Вы, вероятно, использовать что-то вроде этого:

res.send({ foo : 'bar' }); 

Другими словами, вы передаете объект в res.send.

Это будет делать следующее:

  • вызов res.send с объектом в качестве аргумента
  • res.sendchecks the argument type и видит, что это объект, который он перешел к res.json
  • res.json преобразует объект в JSON строка и вызовы res.send снова, но на этот раз с строкой JSON в качестве аргумента
3

Вы должны использовать res.json (body). Он отправит «тело» в качестве тела ответа. Убедитесь, что тело должно быть объектом.

Смежные вопросы