次の例では、変数 'id'を 'set'エミッタのリスナーに渡す方法を理解する必要があります。私の問題は、updateStore(req.id)のようなハンドラを介して渡すことができないということです。mongoStoreからのイベント 'update'には、それが返す独自の戻り値 'mongoId'があります。ネストされたエミッタ変数をイベントリスナーのコールバックに渡す
また、req.idを参照することはできません。これは、値を変更するapp()への別の要求によって変更されないという保証はないからです。ハンドラが開始された時点で、updateStoreハンドラ内のreq.idとmongoIdの両方にどのようにアクセスすればよいでしょうか?
このサンプルコードは実行されず、はるかに大きなプログラムの削除されたバージョンです。私は達成しようとしているものの背後にある論理を提供したいと思っていました。
var self = this;
var app = express();
var mongoStore = new MongoStore({url:'/path/to/mongo'});
function updateStore(mongoId) {
if (mongoId == req.id) {
// do something
self.emit('complete');
}
}
app.get('/*', function(req,res) {
// req.id needs to get passed to updateStore()
mongoStore.on('update',updateStore);
self.on('complete', function() {
self.removeListener('update',updateStore)
}
});
ありがとうございます! –