2016-09-07 9 views
0

ソケットを実行するたびにmongodbコレクションに新しいドキュメントを作成したいが、これらのコレクションは自分がいるページに属している必要があります。ソケット内のリクエストパラメータを取得する

今私はpageId

このような
io.on('connection', (socket) => { 
    const pageId = '57cc491c95f2513e5aad2590'; 

    socket.on('new nodes', (positions) => { 
    Document.create({pageId: pageId}, (err, doc) => { 
     // ... 
    }); 
    }); 
}); 

をhardcordingていますが、私はsocket.io接続は、独自のとISNの上に立つexpressルート

app.route('/pages/:pageId').get((req, res) => { 
    // ... 
}); 

答えて

0

req.params.pageIdからIDを取得したいです高速ルートハンドラの一部。したがって、socket.io接続が到着したときにその要求が終了して完了するため、socket.io接続から直接req.params.pageIdにアクセスすることはできません。したがって、socket.ioから接続するとき、またはページidを示す特定のsocket.ioメッセージを送信するときに、いくつかの追加情報を含める必要があります。

だから、あなたは選択肢のカップルを持っている:

  1. ページから接続すると、あなたがPAGEIDを示し、接続URLのクエリパラメータを含めることができます。次に、io.on('connection', ...)コードでは、そのクエリパラメータを見てpageIdを取得できます。

  2. new nodesメッセージを送信するときに、pageIdを指定するdata引数を含めることができます。

このどちらかそれをPAGEID何割り出しページではJavaScriptで実装することができるが目的のパラメータとして、あるいはそれが何であれ、レンダリングエンジンにより、より自動的に行うことができますが、あなたの最初のページを作成することで、インサート(そうpageIdはページレンダリング時にコードに直接挿入されます)。

+0

@Jamgreen - これはあなたのオプションを説明するのに役立ちますか? – jfriend00

関連する問題