2017-02-26 112 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

哈哈opps。我把它稱爲中間人。 :3固定。 – matt

+0

正是我在找的!謝謝 –