在一组搜索项上循环函数并将结果呈现为一个

时间:2016-11-04 04:57:19

标签: javascript node.js express elasticsearch promise

我的弹性搜索/节点/快递应用程序遇到问题。 elasticsearch返回的结果采用以下格式。

[{
    _index:"football",
    _type:"palyer",
    _source:{
        name:"Paul Pogba",
        jerseyNumber:14,
        shortName:"Norwich"
    }
    }]
[{
    _index:"football",
    _type:"team",
    _source:{
        name:"Norwich",
        shortName:"Norwich"
    }
    }]

我主要关注的是提供综合搜索结果。当我搜索一个俱乐部/团队(例如:曼彻斯特)时,它应该返回所有带有搜索词的俱乐部(已完成)。此外,我计划通过搜索团队的shortName来找到团队成员。当我在团队搜索中只返回一个结果时,我可以这样做。当两个或多个结果调用时,由于JS的异步性质,所有这些结果都无法搜索。我正在研究承诺和表达承诺的路由器,并且无法提出可能的解决方案。我有两个独立的函数searchTeam和searchPlayer,它们接受searchTerm并通过回调函数返回结果。

搜索播放器功能

module.exports.searchPlayers = function(searchData, callback) {
  client.search({
    //elasticsearch query
  }).then(function (resp) {
    callback(resp.hits.hits);
  }, function (err) {
      callback(err.message)
      console.log(err.message);
  });
}

在ejs中调用搜索

<form action='/search/search-players' method='post'>
    <input type="text" name="searchTerm" placeholder="your search term here">
    <button type="submit"> SEARCH </button>
</form>

路线

router.post('/search/search-players', function(req, res) {
  searchModulePlayers.searchPlayers(req.body, function(data) {
    res.render('search', { title: 'Players', resultsP: data });
  });
});

由于我的搜索功能仅接受一个术语,如何将所有搜索结果都添加到数组中,以便我可以使用ejs在一个页面中呈现它们。我之前发布了类似的问题q1。由于我无法得到一个正确的答案,我再次以不同的角度问。

0 个答案:

没有答案