在多个expressjs路由中共享elasticsearch客户端
我试图通过创build单独的文件来将我的巨大的expressjs路由重新组织成更小的块。 但是,有几个需要连接到elasticsearch客户端来执行search:
路线/ index.js
var router = require('express').Router(); var models = require("../models"); var es = require('elasticsearch'); var es_client = new elasticsearch.Client({ host: 'localhost:9200', log: 'trace' }); router.get('/search', function(req, res) { // Do search in elasticsearch // es_client.search({......}); }); module.exports = router;
路线/ user.js的
var router = require('express').Router(); var models = require("../models"); var es = require('elasticsearch'); var es_client = new elasticsearch.Client({ host: 'localhost:9200', log: 'trace' }); router.get('/user/search', function(req, res) { // Do search in elasticsearch // es_client.search({......}); }); module.exports = router;
但是这是没有道理的,因为路由试图连接到es客户端两次,由于“连接中使用错误”,这将失败。
什么是允许我的路线文件连接到elasticsearch进行search的好方法?
做一个像这样的elastic.js文件:
var elasticsearch = require('elasticsearch'); exports.es_client = new elasticsearch.Client({ host: 'localhost:9200', log: 'trace' });
并在你的index.js和user.js中使用它。
例如: – 在user.js这样做:
var router = require('express').Router(); var models = require("../models"); var elastic = require("./elastic"); router.get('/user/search', function(req, res) { // Do search in elasticsearch // elastic.es_client.search({......}); });
- passportjsauthentication使用谷歌应用程序的电子邮件ID
- Express 4.0中,“零或多个”参数在getpath中不起作用
- 与NodeJS的MongoDB连接错误
- npm找不到package.json
- 通过JSON发送Content-Type应用程序/ json的JSON对象是否具有性能优势?parsing文本/纯文本string?
- 将ejs的variables传递给javascript(服务器到客户端),同时避免XSS问题
- 如何克服IE11cachingexpress.js cookie会话?
- 在访问Express路线时join一个socket.IO房间
- jade循环无法访问node.js文件中的variables