节点运行时执行服务器端代码
我正在构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。 也许是这样的:
app.get('/:id([a-z0-9]{16})', function(req, res) { console.log(req.params.id); });
上面假定一个id是16个字符,只包含小写字母和数字。
然后您将检查消息空间ID是否对应于get
处理程序中的实际消息空间。 如果不是,你可以处理这个错误,或者通过调用next()
(你需要添加next
作为参数到你的处理程序来工作)在中间件链上传递它。
- 快速应用程序 – 在Heroku上运行,并使用Parse作为后端
- findOneAndUpdate与returnNewDocument一起使用:true返回原始文档MongoDB
- Nodejs / mongodb-检查用户是否具有pipe理员权限(基于令牌的身份validation)
- azure node.js console.log不能login到stdout或stderr文件
- 使用Angular routeProvider和Express路线
- node.js – 尝试使用Parse Server查询时,Heroku服务器超时?
- 使用socket.io和express-session时,会在每次页面加载时生成一个新的会话ID
- 如何在node.js上进行一些authentication后避免请求stream丢失的数据?
- 在Jade视图中使用JavaScript代码 – 如果(variables)显示未定义,而不是传递