【问题标题】:Pug prints the same value multiple timesPug 多次打印相同的值
【发布时间】:2020-07-30 17:28:49
【问题描述】:

这是我的哈巴狗代码:

html
  head
    style
        include ../../public/css/admin/admin.css
  body
    .main
      .yeniler-kutu
        each yeni, index in yeniler
          li(class="yeniler")= yeni 
    script
      include ../../public/js/admin/admin.js 

这是我的后端 javascript 代码:

router.get("/index", async (req, res) =>
{
    try
    {
            const users = await User.find({});
            for(x=0; users[x]; x++)
            {
                if(users[x].gorev === "Menti" && !users[x].mentor)
                {
                    yenilerArr.push(users[x].name);
                }
            }
            res.status(200).send(pug.renderFile("./views/admin/admin.pug", 
            {
                yeniler: yenilerArr,
            })) 
    }
    catch(e)
    {
        res.status(400).send(e)
    }
})

问题是 pug 多次显示相同的列表元素。当我第一次加载页面时它工作正常并且只显示一次字符串但是当我重新加载页面时我看到重复的值。 例如,如果yeniler 数组只包含一个名为hello 的元素,它会显示字符串hello,但当我重新加载页面时,我会看到2 个hellos。感谢阅读。

【问题讨论】:

  • 唯一可以保持页面刷新(甚至很难)的是缓存/状态或数据库。确保您不修改数据库(例如模型推送)并且您的视图不使用任何类型的浏览器存储(本地等)
  • 谢谢。我正在使用推送。

标签: javascript node.js pug


【解决方案1】:

我认为这里有一点语义错误:

for(x=0; users[x]; x++)

应该是:

for(x=0; users.length; x++)

【讨论】:

    【解决方案2】:

    看起来yenilerArr 是在请求​​处理程序的范围之外定义的,因此它在请求之间持续存在,并且充当全局变量。

    它应该在请求处理程序中定义,在for循环之前的某个地方:

    const yenilerArr = []
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-04-03
      • 2016-12-23
      • 1970-01-01
      • 2013-12-11
      • 1970-01-01
      • 1970-01-01
      • 2022-08-05
      • 1970-01-01
      相关资源
      最近更新 更多