首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >承诺解决后,在“然后”中发送回复

承诺解决后,在“然后”中发送回复
EN

Stack Overflow用户
提问于 2017-05-09 07:37:13
回答 2查看 2.1K关注 0票数 0

我想显示我从搜索localhost:8400/api/v1/search中得到的json。但我不知道怎么做。

我正在使用Elasticsearch Javascript客户端

我的路线:

代码语言:javascript
运行
AI代码解释
复制
'use-strict';
const express = require('express');
const elasticsearch = require('../models/elasticsearch.js');

const router = express.Router();

router.get('/api/v1/search', elasticsearch.search);

用于访问ElasticSearch数据库。

代码语言:javascript
运行
AI代码解释
复制
const es = require('elasticsearch');

let esClient = new es.Client({
  host: 'localhost:9200',
  log: 'info',
  apiVersion: '5.3',
  requestTimeout: 30000
})

let indexName = "randomindex";

const elasticsearch = {

  search() {
    return esClient.search({
      index: indexName,
      q: "test"
    })
      .then(() => {
        console.log(JSON.stringify(body));
        // here I want to return a Response with the Content of the body
      })
      .catch((error) => { console.trace(error.message); });
  }
}

module.exports = elasticsearch;
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-05-09 08:00:28

首先,快速路线的路由处理程序总是以(request, response, next)作为其参数。您可以使用响应对象将数据发送回客户端。

不必将elasticsearch.search方法作为路由处理程序传递,您可以编写自己的路由处理程序并在其中调用elasticsearch.search,因此仍然可以访问response对象。例如:

代码语言:javascript
运行
AI代码解释
复制
function handleSearch(req, res, next) {
  elasticsearch.search()
    .then(function(data) {
      res.json(data)
    })
    .catch(next)
}

并按如下方式构造搜索功能:

代码语言:javascript
运行
AI代码解释
复制
const elasticsearch = {

  search() {
    return esClient.search({
      index: indexName,
      q: "test"
    })
    .then((body) => body) // just return the body from this method
  }
}

这样,您就可以将查询弹性和处理请求的关注点分开。您还可以访问请求对象,以防要将任何查询字符串参数从请求传递给搜索函数。

票数 1
EN

Stack Overflow用户

发布于 2017-05-09 07:42:31

由于您将elasticsearch.search添加为路由处理程序,因此将使用一些参数调用它。

search方法的签名更改为search(req, res)

然后打电话给res.send(JSON.stringify(body));

有关更多细节,请参见https://expressjs.com/en/4x/api.html#res

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43874150

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档