res.send不适用于对象?

时间:2016-03-19 14:05:38

标签: node.js express

这是代码,htis是使用express框架的node.js:

var express = require('express');
var router = express.Router();

/* GET home page. */
router.get('/', function(req, res, next) {
  res.render('index', { title: 'Expressxx' });
});

router.post('/', function(req, res, next) {

  var body = '';

  req.on('data', function(chunk) {
     body += chunk;
     });

  req.on('end', function() {
     console.log(body);
     });

  /* res.send('Got the Post'); */

  res.set('Content-Type', 'text/plain');
  res.send('this is the body' + body);
  res.end();

});

module.exports = router;

当我做console.log(正文);我看到了预期的数据,但在客户端,我看到的是“这就是身体”。似乎res.send无法读取body obj?

...谢谢

2 个答案:

答案 0 :(得分:1)

上面的代码会在触发data事件之前发送响应,因此永远不会构建body。在res.send事件处理程序中移动end和关联的调用可以获得您想要的结果。

答案 1 :(得分:0)

经过多一点测试后,似乎res.send将发送一个obj,如果它是一个Json obj ...在我的情况下它只是在主体obj中的纯文本。

当我在这里阅读这个方法时...... http://expressjs.com/en/api.html#res.send

它说: body参数可以是Buffer对象,String,对象或Array

它没有说它必须是一个json obj ???