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

正是我在找的!谢谢 –