我试图通过创建单独的文件将我巨大的expressjs路由重新组织成更小的块。但是,有些人需要连接到elasticsearch客户端来执行搜索:
路由/ 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进行搜索的好方法是什么?
答案 0 :(得分:2)
制作一个弹性的.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({......});
});