【发布时间】:2014-12-21 09:22:16
【问题描述】:
我有一个关于 nodejs 的 solr-client 模块的问题。我正在使用这个模块来查询 solr-index。
只要我不必等待查询完成并且我只需要异步结果的结果,模块本身就可以正常工作。
但目前我不知道如何才能等待搜索请求完成并按顺序使用结果。
我的经理有以下方法
SolrManager.prototype.promisedQuery = function(query, callback) {
var solrClient = solr.createClient(this.configuration.cores.page);
var docs = null;
var finished = false;
var deferred = Q.defer();
var request = solrClient.search(query, function(err,obj){
if (!err) {
if (obj.response.numFound > 0) {
deferred.resolve(obj.response.docs);
} else {
deferred.resolve(null);
}
} else {
deferred.reject(err);
}
});
var records = null;
var promise = deferred.promise;
promise.then(function(result) {
records = result;
}).fail(function(error){
records = error;
});
return records;
};
这里的问题是,我尝试等待查询结果并将其用作“promisedQuery”的返回值。
我从几天前开始尝试在顺序调用中使用此方法,还使用不同的附加模块,如“wait.for”、“q”等,但似乎没有任何效果。
solr-client 的回调函数总是在 manager-method 已经返回后执行。同样,promise-methods 甚至会在 manager-method 返回后被调用。
有人可以在该主题上帮助我或提供一些提示,我如何等待 solr-client-search 操作的响应,然后按顺序返回?
感谢您的帮助。
乌多·格哈兹
【问题讨论】:
标签: javascript node.js asynchronous solr client