2017-02-26 14 views
0

ルータの向こう側にマングースレスポンス(動的サイト名など)をグローバルに設定する必要があるこの状況があります。私はこれを試して、それが動作しますが、私はそれを行うための最善の方法ではないと思う。それを達成する最良の方法は何か分かりますか?NodeJS:Mongooseレスポンスをグローバルに設定する方法は?

私の現在のコード:

SomeSchema.findOne({}, function(err, callback) { 
    router.get('/', function(req, res, next) { 
     res.render('index', { 
      title: 'Home' 
     }); 
    }); 

    router.get('/page1', function(req, res, next) { 
     res.render('page1', { 
      title: 'Page 1' 
     }); 
    }); 
}); 
+1

この設定はどのようにグローバルにオブジェクトに設定されますか?これはちょうどカップルルートを定義しています。私はあなたが解決しようとしている問題を理解していませんか?あなたが持っているいくつかのコードの実行可能性について私たちにコメントしてもらうには、現実のコードを表示しなければなりません。 – jfriend00

+0

こんにちは、私は私のサイト名をmongodbに保存していることを意味します。私はすべてのルートにサイト名を繰り返す必要があります。これが最善の方法ですか?またはより良い方法がありますか? –

+0

まあ、あなたはどこからでもサイト名をつかうことを表示せず、あなたが何をしようとしているのかを表示しません。私たちは推測することができますが、私たちはそれらの両方が示唆を出すために何を知っている必要があります。あなたが実際に行っていることを象徴する実際のコードを見せてください。私たちは推測や理論的な質問にはうまくいきません。私たちは、実際のコードと実際の問題の説明でうまく動作します。 – jfriend00

答えて

0

何をしたいのミドルウェアを使用することです。あなたが必要とする価値をつかんで、それを各リクエストに渡すもの。

値を取得する必要がある場合は、サーバーの起動時に呼び出すだけです。そうでない場合は、ミドルウェアのアプローチについて以下を参照してください。

route.use(function(req, res, next) { 
    //Runs on every request. 
    SomeSchema.findOne({}, function(err, callback) { 
    req.someValue = callback; 
    next(); 
    }); 
}) 

router.get('/', function(req, res, next) { 
    console.log(req.someValue); //My value is here 
    res.render('index', { 
    title: 'Home' 
    }); 
}); 

router.get('/page1', function(req, res, next) { 
console.log(req.someValue); //or here 
    res.render('page1', { 
    title: 'Page 1' 
    }); 
}); 
+1

middleman?またはミドルウェア? – majidarif

+0

haha​​ opps。私はそれを仲買人と呼んでいます。 :3修正済み。 – matt

+0

私が探しているもの!ありがとう –

関連する問題