【问题标题】:Express res.render stuck in infinite loopExpress res.render 陷入无限循环
【发布时间】:2018-01-31 23:28:07
【问题描述】:

步骤: 从 mongodb 中提取数据以填充搜索页面上的链接。能够单击链接将最终用户带到由 mongodb 自动填充的通用业务页面。使用来自 mongodb 的 JSON 数据呈现页面。

问题: res.render 卡在无限循环中(也不会抛出错误)

我尝试添加一个 if 语句,这样 res.render 就不会再次渲染,但仍然卡在一个循环中。

routes/business.js

router.get('/:business', (req, res) => {
    console.log(req.params.business);
    Business.getBusinessByUrl(req.params.business, (err, business) => {
        if (err) throw err;
        res.render('business', {
            found: true,
            business_name: business.business_name,
            business_profile_image: business.business_profile_image,
            business_url: business.business_url
        });
    });
});

module.exports = router;

models/business.js

module.exports.getBusinessByUrl = function (businessUrl, callback) {
    const query = { business_url: businessUrl };
   Business.find(query, callback);
};

这是它在浏览器中的样子: Imgur

如果您需要任何其他代码,请告诉我。

【问题讨论】:

  • 嘿@马森柯蒂斯。介意告诉我们getBusinessByUrl func 下面发生了什么吗?
  • 是的,一秒钟没问题。
  • 如果单个请求的查找失败,您真的想停止服务器吗?这就是throw err 会做的事情,可能需要重新考虑......
  • 为什么你有if (err) throw err;而不是实际的错误处理?
  • 看来加载的页面/business/:business 提供了响应。我认为您将客户端 JavaScript 与 Node.js 混淆了。服务器没有陷入无限循环,您的浏览器代码是。

标签: javascript node.js mongodb express handlebars.js


【解决方案1】:

经过一段时间的搜索,我找不到任何有用的东西。最终我想通了。碰巧当我注释掉<div w3-include-html="file-included.html"> 行时,它会停止无限加载。也感谢所有试图帮助我的人。

【讨论】:

    猜你喜欢
    • 2020-05-13
    • 1970-01-01
    • 2013-03-17
    • 2021-02-15
    • 2022-01-23
    • 2021-01-23
    相关资源
    最近更新 更多