NodeJS 我可以发布我的数据,但不能用body-parser显示

rkkpypqq  于 2023-10-17  发布在  Node.js
关注(0)|答案(1)|浏览(116)

我有一个网站项目。我有一个日常程序的形式,我想在另一个选项卡中显示它。

<form action="/posts/test" method="POST" enctype="multipart/form-data"> 
    //htmlcodes
 </form>

我得到的数据是:

router.post("/daily_prog" , (req,res) => {
    let daily_image = req.files.daily_image
    daily_image.mv(path.resolve(__dirname, "../../public/img/dailyimages", daily_image.name))

    Daily.create({
        ...req.body,
        daily_image: `/img/dailyimages/${daily_image.name}`,
        
    },)
    req.session.sessionFlash={
        type: "alert alert-success",
        message: "Successfully done."
    }
    console.log(req.body)
    res.redirect("/daily")
})

使用console.log,我可以在我的终端中看到我刚刚发布的表单中的所有数据。现在我想用下面的代码在“Daily”标签中显示它,但它没有出现。
路由器:

router.get("/daily",(req,res)=>{
    Daily.find({}).lean().then(daily =>{
        res.render("site/daily",{daily:daily})
    })
})

和HTML页面标记,我想显示我的数据:

{{#each daily}}
                    <div class="col-md-6">
                        <div class="blog">
                            <div class="blog-img">
                                <img src="{{daily_image}}" class="img-fluid">
                            </div>
                            <div class="blog-content">
                                <ul class="blog-meta">
                                    <li><i class="fas fa-users"></i><span class="writer">{{daily_content}}</span></li>
                                    <li><i class="fas fa-clock"></i><span class="writer">{{daily_content}}</span></li>
                                    <li><i class="fas fa-comments"></i><span class="writer"></span></li>
                                </ul>
                                <h3>{{daily_title}}</h3>
                                <p>{{daily_content}}</p>
                                
                                
                            </div>
                        
                        </div>
                        
                    </div>
                    {{/each}}

当我使用{{#each}}{{/each}}时,这些标记之间的所有HTML在显示中都丢失了。如果我不使用它们,只是尝试在没有它们的情况下显示,那么任何动态数据也不会出现。

vsikbqxv

vsikbqxv1#

您的Daily.create是一个异步任务,因此在您的数据保存到数据库之前,您的res.redirect("/daily")很可能在事件循环中执行。一个简单的改进是像这样使用async/await模式:

router.post("/daily_prog" , async (req,res) => { //< Mark as async function
    //...
    //await the create call
    await Daily.create({
        ...req.body,
        daily_image: `/img/dailyimages/${daily_image.name}`,
        
    });
    //...
    res.redirect("/daily")
})

相关问题