gpt4 book ai didi

javascript - 旧版本节点中来自数据库的动态路由

转载 作者:行者123 更新时间:2023-12-02 13:56:01 24 4
gpt4 key购买 nike

我正在使用 Node.js v ~4。

我正在尝试使用数据库中的对象来构建路线。这是我的逻辑:

  for (page of pages) {
app.get(`/${page.path}`, (req, res)=> {
res.render('test', {
page:page,
})
})
}

但是,无论我访问哪个网址,我总是从数据库中的最后一个对象获取内容。

所以网址可以工作,但是 app.get() 回调函数内的代码无法正常工作。例如 page 变量无效,显示最后一个对象,而不是一个匹配的路径。如果我添加这段代码:

console.log(req.url);
console.log(page.path);

作为回调函数内的第一行,我将得到下一个输出:

点击第一个网址:

/test01
test03

点击第二个网址:

/test02
test03

是否有更方便的动态路由和页面方法?

最佳答案

您需要在要迭代的变量上使用 let 以保留范围 - 否则它将始终将路由绑定(bind)到要迭代的最后一个项目:

由于 Node 不支持 let,因此请使用 IIFE:

for (page of pages) {
(function(p) {
app.get(`/${p.path}`, (req, res)=> {
res.render('test', {
page:p,
})
})
})(page)
}

关于javascript - 旧版本节点中来自数据库的动态路由,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40682389/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com