模块返回Express承诺

Module Return Promise to Express

本文关键字:承诺 Express 返回 模块      更新时间:2023-09-26

我有一个elasticsearch(可以是任何东西)js文件,它做一个简单的查询,并使用一个承诺来返回数据。

我在express (server.js)中调用该模块希望获得数据因为最终我想将其发送到angular或其他真正的…

我想知道为什么我不把数据回快递服务器?

get.js [elasticsearch js文件]

var elasticsearch = require('elasticsearch');
var client = new elasticsearch.Client({
  host: 'localhost:9200',
});
var Q = require('q')
function GetElastic(qry) {
var deferred = Q.defer();
client.search({
        index: 'social',
        type: 'network',
        body: {
            query: {
                query_string:{
                   query:qry
                }
            }
        }
    }).then(function (resp) {       
        deferred.resolve(resp);
    }, function (err) {
        console.log(err.message);
        return deferred.resolve(err);
    });
    return  deferred.promise;
}
module.exports = GetElastic

server.js (express服务器文件)

var express = require('express')
var bodyParser = require('body-parser')
var Get = require('./models/get')
var app = express()
app.use(bodyParser.json())
app.get('/api/posts',function(req, res){
  var qry = 'node'
  var get = new Get(qry)
  res.writeHead(200, {'Content-Type': 'text/plain'});
  res.end(JSON.stringify(get));
  console.log(get)
})
app.listen(3000, function(){
    console.log('Server listening on',3000)
})

change

var get = new Get(qry)

  new Get(qry).then(function(data){
             get  = data;
  });