我有一个elasticsearch(可以是任何东西)js 文件,它执行一个简单的查询并使用 promise 返回数据。
我在我的express(server.js)中调用该模块,希望获得数据,因为最终我想将其发送到 Angular 或其他真正的......
我想知道为什么我没有将数据返回到 Express 服务器中?
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)
})
最佳答案
改变
var get = new Get(qry)
到
new Get(qry).then(function(data){
get = data;
});
关于javascript - 模块返回 promise express ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32409082/