Express js/Handlebars 新手 - 使用 res.locals.currentPost 仅适用于某些情况,无法弄清楚原因

问题描述

这是我第一次在堆栈溢出上发帖,我会尽力描述我的问题。

我正在处理一个图像网站项目(想想 imgur/flickr)并且我第一次使用把手模板。我制作了一个页面来查看带有照片信息(发布者和描述)和评论部分的单张照片。评论部分运行良好,但照片和照片信息无法加载。

我已经尝试了几个小时,但我不明白为什么它只适用于一个而不适用于另一个。我写了错误代码来跟踪信息,它确实进入了页面所需的中间件,但没有出现在页面上。

这是我的中间件页面代码

var {getMRecentPosts,getMPostById} = require('../models/Posts');
const {getCommentsForPost} = require('../models/Comments');
const { errorPrint,successprint } = require('../helpers/debug/debugprinters');
const postMW = {};

postMW.getPostById = async function (req,res,next) {
    try{
        successprint(req.params.id);
        let results =  await getMPostById(req.params.id);

        successprint(results[0]);

        if(results && results.length){
            res.locals.currentPost = results[0];
            errorPrint(res.locals.currentPost);
            next();
        }else{
            req.flash("error","This is not the post you are looking for.");
            res.redirect('/');
        }   
    }catch(error){
        next(error);
    }
}

postMW.getCommentsByPostId = async function (req,next) {
    try{
        let results = await getCommentsForPost(req.params.id);
        res.locals.currentPost.comments = results;
        next();
    }catch (error){
        next(error);
    }
}

module.exports = postMW;

这是来自我的 errorPrinter 的控制台消息(同样没有实际的系统错误,只是试图确保信息做到这一点):

[
  BinaryRow {
    username: 'dan',title: 'Flying fox back at it again',description: 'Once a gain not actually a fox,just called on',photopath: 'public\\images\\uploads\\3404ba6eb264c819ff7011378b756c8426c17e4d57bc.jpeg',created: 2020-12-20T00:28:28.000Z
  }
]

这是我的 Hbs 文件代码

<div id="post-container">
    <div id="photo-container">
        <div id="post-title" class="display-6 font-weight-bold">{{currentPost.title}}</div>
        <div id="post-info">
            <p><span class="form-label">Posted by:</span>
                <span id="post-author">
                    {{currentPost.username}}
                </p>
            <p><span class="form-label">Posted at:</span><span id="post-date">{{currentPost.created}}</p>
        </div>
        <div id="post-description" class="lead">{{currentPost.description}}</div>
        <img id="post-image" class="img-fluid" src="/{{currentPost.photopath}}" alt="A photo should have been here">
    </div>

    <div id="comment-container">
        <div id="messages">
            {{#each currentPost.comments}}
            {{> comment this}}
            {{/each}}
        </div>
        <div id="comment-Box">
            <textarea id="comment-Box-text" class="form-control" aria-label="With textarea"
                placeholder="Enter Comment Here!"></textarea>
            <span id="comment-Box-button" class="input-group-text"><img src="https://img.icons8.com/metro/26/ffffff/paper-plane.png"/></span>
        </div>
    </div>
</div>

欢迎任何见解!!!我对错误是什么视而不见和/或我真的不擅长谷歌搜索以获得正确的帮助,哈哈

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)