节点js / Express js res.write失败但res.send有效。什么会导致这个?

时间:2018-02-07 20:24:08

标签: node.js express

我遇到一个令我感到困惑的问题。当使用带有Express的Node时,如果我使用res.write和res.end,则不会发送任何数据并且没有生成错误,但是如果我使用res.send,则会发送数据。

Nodejs版本8.9.4, Expressjs版本4.16.2

这不起作用:

res.write(data);
res.end;

这确实有效:

res.send(data);

现在我的功能看起来像这样:

app.post('/getData'), function (req,res)
{
  let p;
  let key = mysql.escape(req.body.key);

  // response.writeHead(200, {'content-type', 'application/json'});
  // changed to the below so I could use res.send
  res.setHeader('content-type', 'application/json');

  let query = "SELECT * FROM datatable WHERE key = " + key;
  p = P_GetQueryData(query, ParseDataFunction);
  p.then(data => {
    res.send(data);
    // previously had the below
    // res.write(data);
    // res.end;
  }).catch(err => {
    console.log(err);
    res.sendStatus(500);
  });
});

我能想到的唯一一件事是,我最近转而使用promises来处理我使用全局变量的缺陷,也许res.write / res.end在.then内部不起作用? / p>

1 个答案:

答案 0 :(得分:1)

cmp test.asm <(bin/mips -d < test.bin) 将返回函数定义,而不是按预期终止请求/响应周期,您应该使用括号:

res.end