【问题标题】:how can I insert logic in app.get() node.js/express?如何在 app.get() node.js/express 中插入逻辑?
【发布时间】:2018-10-24 19:33:15
【问题描述】:

我正在使用 express 运行 node.js 服务器。 我的服务器需要执行一些操作,例如解析文件日志、提取 ipAddresses 并使用外部 Api 将它们转换为坐标。 此坐标用于在我的 html/ejs 页面中显示谷歌地图。

我想,一旦我在地图上使用 ("/") 启动/刷新主页,调用所有这些操作,并通过地图内的市场显示坐标。

所以我的想法是

    app.get("/" , function(req,res){
    parsingLog();
    res.render("homepage.ejs")
    })

其中 parsingLog() 是第一个函数,其他函数在该函数内连接。在循环结束时,我获得了一个对象数组,其中包含要传递给前端 javascript 以显示地图的坐标。但是使用 app.get 中的代码,代码会运行,但没有结果。如果我在没有 app.get 的情况下运行代码,我将获得所有正确的结果。 我不明白问题出在哪里,不幸的是,这是我进入 node.js/express 的第一步。 感谢所有帮助我的人

【问题讨论】:

  • 如果您在 parsingLog 函数中调用一些外部 API,那么它必须是异步的。您的代码似乎在 parsesLog 完成运行之前尝试呈现 homepage.ejs 并且未从日志文件/外部 API 获得结果。这段代码sn -p 不够分析问题
  • 在您告诉我 ejs 在获取数据之前渲染后,我尝试做一件事。我将 res.render 放在 setTimeout 中。 app.get("/" , function(req,res){ parsingLog(); setTimeout( function () { res.render("homepage.ejs"); }, 3000); });而且效果很好。非常感谢

标签: node.js express google-maps-api-3


【解决方案1】:
app.get('/', (req, res)=> {
  const log = parsingLog();
  res.send(log)
})

这是一个快速端点。对主页“/”的任何 GET 请求都会触发此函数。

HTTP 是基于请求响应的 Web 协议,这意味着您生成 GET 请求,并且服务器(在您的情况下为节点/Express)必须将响应发送回客户端。

你的函数只返回一个字符串 res.render('stringhere')。如果要将函数的结果附加回响应并将其发送回客户端,则需要将结果附加到 res.send 因为它几乎是您携带数据的唯一地方。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-03-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-08
    相关资源
    最近更新 更多