节点运行时执行服务器端代码

我正在构build一个实践懒猫猫应用程序,并希望实现用户创build自己的消息空间的能力。 创build消息空间时,会创build一个唯一的密钥并存储到我的数据库中。 我的计划是使用这些唯一的键来提供具有消息function的相同的html页面。 从理论上讲,这是可行的,但是我在检索密钥时遇到了问题,并且使用它们来路由到我的message.html文件。 有没有办法运行我的服务器,检索密钥,并将其存储到一个全局variablesTHEN路由到HTML页面? 我正在使用Node,Express和MongoDB。

下面是我的代码在后端检索密钥的样子:

var dbKeys = []; db.messageSpaces.find({}, {"_id": 0, "name": 0}, function(error, data) { if (error) { console.log(error); } else { for (var i = 0; i < data.length; i++) { dbKeys.push(data[i].key); } } }); 

而我怎么试图路由他们:

 for (var i = 0; i < dbKeys.length; i++) { app.get(`/${dbKeys[i]}`, function(req, res) { res.sendFile(path.join(__dirname, "public/message.html")); }); } 

我想我会使用一个调用app.get并使用https://expressjs.com/en/guide/routing.html#route-parameters中描述的技术之一来执行格式的基本validation&#x3002; 也许是这样的:

 app.get('/:id([a-z0-9]{16})', function(req, res) { console.log(req.params.id); }); 

上面假定一个id是16个字符,只包含小写字母和数字。

然后您将检查消息空间ID是否对应于get处理程序中的实际消息空间。 如果不是,你可以处理这个错误,或者通过调用next() (你需要添加next作为参数到你的处理程序来工作)在中间件链上传递它。