【问题标题】:Ejs page not rendering on the simplified version of codeEjs页面未在简化版代码上呈现
【发布时间】:2023-03-18 16:38:01
【问题描述】:

此代码呈现“帖子”页面:

app.get("/posts/:postName", function(req, res) {
  const requestedTitle = _.lowerCase(req.params.postName);

  posts.forEach(function(post) {
    const storedTitle = _.lowerCase(post.title);

    if (storedTitle === requestedTitle) {
      res.render('post');
    }
  });

但是当我将其简化为:

app.get("/posts/:postName", function(req, res) {

  posts.forEach(function(post) {
    if (req.params.postName === _.lowerCase(post.title)) {
      res.render('post');
    }
  });

“帖子”页面不再呈现。谁能解释一下为什么?另外,我最近才开始学习 javascript。

【问题讨论】:

    标签: javascript node.js express lodash ejs


    【解决方案1】:

    我认为这背后的可能原因是在代码中:

    app.get("/posts/:postName", function(req, res) {
      const requestedTitle = _.lowerCase(req.params.postName);
    
      posts.forEach(function(post) {
        const storedTitle = _.lowerCase(post.title);
    
        if (storedTitle === requestedTitle) {
          res.render('post');
        }
      });
    

    您正在将 "req.params.postName""post.title" 都转换为小写,并且您正在检查它们是否相等,但在代码中:

    app.get("/posts/:postName", function(req, res) {
    
      posts.forEach(function(post) {
        if (req.params.postName === _.lowerCase(post.title)) {
          res.render('post');
        }
      });
    

    您只是将 post.title 转换为小写。所以换个说法:

    if (req.params.postName === _.lowerCase(post.title)) {

    if (_.lowerCase(req.params.postName) === _.lowerCase(post.title))

    还有一件事我不确定您的架构是如何设置的,但是如果您允许多个具有相同标题的帖子,那么您将收到“无法读取标题”的错误。要么使用 return res.render(post) 或通过 id 使用路由而不是帖子名称,因为这不是一个很好的做法。

    希望它应该有效。

    【讨论】:

      猜你喜欢
      • 2020-05-18
      • 1970-01-01
      • 2023-03-20
      • 1970-01-01
      • 2020-05-31
      • 2019-05-10
      • 1970-01-01
      • 2021-08-05
      • 1970-01-01
      相关资源
      最近更新 更多