javascript - Express node.js forEach 路由
问题描述
我试图为我使用forEach
循环的每个 ID 创建一条路线,但它会一直加载直到timeout
达到,所有预期值都到位,一切都很好,但第二条路线没有运行,直到现在我都在拼命地对抗它。我确定有问题。
server.js
const router = require('express').Router();
function isAuthorized(req, res, next) {
if (req.user) {
next();
}
else {
res.redirect('/login')
}
}
let myguild = [];
router.get(`*`, isAuthorized, (req, res) => {
res.status(200);
console.log("wow");
console.log(req.user.guilds.length)
req.user.guilds.forEach(guild => {
myguild.push(guild);
})
console.log("Finished");
myguild.forEach(guild => {
console.log('Started')
router.get(guild.id, (req, res) => { // here is the problem
console.log("uh")
res.send("HAMBURGER")
console.log(req, res, guild)
})
console.log("Outed")
})
});
module.exports = router;
output:
wow
23
Finished
Started
Outed
Started
Outed
Started
Outed
Star... 'there is more but this is enough'
它应该在其中运行并运行,server/${guild.id}
但收到了(failed)
请求
有任何想法吗?
解决方案
您可能需要重新设计 API 以更好地适应您想要完成的任务。如果您已经知道哪些公会可用,那么您需要在服务器初始化之前创建这些公会。
即使它们来自数据库或者是动态的,您也可以遍历公会“选项”并创建端点,然后仅当用户合格时才提供对它们的访问权限。
const { guilds } = require('./config')
const guildHandler = (req, res) => {
// Assuming you're doing more here
res.send('Hamburger')
}
guilds.forEach(guild => router.get(`/guilds/${guildId}`, guildHandler)
或者,如果您没有在每个公会的中间件中做不同的事情,那么您可以只为公会提供一条路线。
router.get('/guilds/:guildId, guildHandler)
不太确定您要完成什么,但请查看 Express 文档。他们很容易解决大多数用例。
推荐阅读
- php - Laravel 管理中间件不会重定向到仪表板
- react-native - Expo错误输出未显示目录或源
- php - 为什么网页中的 phpinfo() 显示版本 5.6,但命令行中的 php -v 显示 7.3?
- python - 如何在非索引列上找到多个熊猫数据框的交集
- c - C: printf 在 while 循环之前仍然没有刷新,即使格式字符串中有换行符
- c++ - 在 Visual C++ 2017 中:属性页中的哪个位置说明了哪些应用程序类型对应于项目?
- webpack - @font-face 不上传本地字体并且不显示错误(webpack)
- java - 每当我尝试获取表上的值并在`setString`上使用它时,我都会收到 indexOutOfBoundsException
- reactjs - 如何通过单击查看按钮显示保存的数据
- algorithm - TEA 算法中操作数的值在 Assembly 中无法正确解密