我想在每次运行套接字时在mongodb集合中创建一个新文档,但这些集合应该属于我所在的页面。
现在我正在努力pageId
像这样
io.on('connection', (socket) => {
const pageId = '57cc491c95f2513e5aad2590';
socket.on('new nodes', (positions) => {
Document.create({pageId: pageId}, (err, doc) => {
// ...
});
});
});
但我想从req.params.pageId
路径
express
的ID
app.route('/pages/:pageId').get((req, res) => {
// ...
});
答案 0 :(得分:0)
socket.io连接独立存在,不属于快速路由处理程序。因此,您无法直接从socket.io连接访问req.params.pageId
,因为当socket.io连接到达时,该请求已完成并完成。因此,当您从socket.io连接或发送指示页面ID的特定socket.io消息时,您将不得不包含一些其他信息。
所以,你有几个选择:
从页面连接时,可以在连接URL上包含指示pageId的查询参数。然后,在io.on('connection', ...)
代码中,您可以查看该查询参数以获取pageId。
发送new nodes
消息时,可以包含指定pageId的数据参数。
这可以在页面上的Javascript中实现,它可以确定它是什么pageId并将其作为所需参数插入,或者可以通过任何渲染引擎创建初始页面来更自动地完成(因此插入了pageId)在页面上将时间直接渲染到你的代码中。)