Node.js 只执行了一个函数

Node.js only one function executed

我尝试在 post 请求中执行两个函数,但只触发了一个。函数 makeEntry 执行但之后的函数 renderEntries 不执行。任何人都可以帮忙吗? 这是代码:https://codepaste.net/bpsxsy

这是由于回调在 Javascript 中的工作方式。这是重要的部分:

  app.post('/guestbook_post', urlencodedparser, function(req, res){
    makeEntry(req, res, Guestbook);
    renderEntries(res, Guestbook);
  });

您将 res 传递给两个函数。但是 makeEntry 调用 res.send() 这意味着它将结束请求并将响应发送回客户端。但是,renderEntries还没有执行,还在事件循环中等待。它将在您下次发出 post 请求时执行,这将导致非常混乱和错误的行为。

为了使其按预期工作,将函数 makeEntryrenderEntries 重构为 return 所需的结果对象并将其呈现给客户端一次。像这样:

  app.post('/guestbook_post', urlencodedparser, function(req, res){
    makeEntry(req, Guestbook, (err, entry) => {
        renderEntries(entry, Guestbook, (err, result) => {
            res.send(result);
        });
    });
  });