Поиск строки запроса из базы данных AWS - PullRequest
0 голосов
/ 16 марта 2020

Я запрашиваю AWS базу данных пользователей с хуками для поиска, извлечения и реагирования. Чтобы заставить его работать, мне нужно было настроить отдельный сервер express и сделать запрос на выборку, так как есть проблемы с CORS с AWS с небольшим способом обойти это.

My запрос на выборку ...

    const getUsers = async (query) => {
        const results = await fetch(`http://localhost:3005/search?`)      
        const userData = await results.json()
        console.log("this is the results", results, "this is the data", userData);

        return userData.results
    }

Если я жестко закодирую запрос на сервере express примерно так ...

const express = require('express'); 
const request = require('request'); 
const app = express();

app.get('/search', function(req, res, query){ 
    request(`https://search-*****-*****.eu-west-1.cloudsearch.amazonaws.com/2013-01-01/search?q=bob`, function (error, response, body) { 
      if (!error && response.statusCode === 200) { 
        console.log(body); 
        res.send(body); 
      } 
     }); 
  });

  app.listen(3005); 
console.log('Server running on port %d', 3005);

Это работает, вывод консоли ... ... 1009 *

status: {rid: "****", time-ms: 1}
hits:
found: 1
start: 0
hit: [{…}]
__proto__: Object
__proto__: Object

Поскольку попадания являются массивом пользователя для Боба, однако, когда я передаю строку запроса в свой запрос на выборку, она не возвращает никаких результатов

    const getUsers = async (query) => {
        const results = await fetch(`http://localhost:3005/search?q=${query}`)      
        const userData = await results.json()
        console.log("this is the results", results, "this is the data", userData);

        return userData.results
    }

const express = require('express'); 
const request = require('request'); 
const app = express();

app.get('/search', function(req, res, query){ 
    request(`https://search-*****-*****.eu-west-1.cloudsearch.amazonaws.com/2013-01-01/search`, function (error, response, body) { 
      if (!error && response.statusCode === 200) { 
        console.log(body); 
        res.send(body); 
      } 
     }); 
  });

  app.listen(3005); 
console.log('Server running on port %d', 3005);

Он не возвращает хитов ...

status: {rid: "****", time-ms: 1}
hits:
found: 0
start: 0
hit: [{…}]
__proto__: Object
__proto__: Object

Я уверен, что лучший способ сделать запрос - это включить его в мой запрос на выборку, но я не уверен, почему он не работает. Если бы кто-нибудь мог пролить свет, я был бы благодарен.

1 Ответ

0 голосов
/ 16 марта 2020

Что вы делаете http://localhost: 3005 / search? Q = $ {query} это из внешнего интерфейса, но не используется как req.query.q в aws url.

const express = require('express'); 
    const request = require('request'); 
    const app = express();

    app.get('/search', function(req, res, query){ 
        request(`https://search-*****-*****.eu-west-1.cloudsearch.amazonaws.com/2013-01-01/search?q=`+req.query.q, function (error, response, body) { 
          if (!error && response.statusCode === 200) { 
            console.log(body); 
            res.send(body); 
          } 
         }); 
      });

      app.listen(3005); 
    console.log('Server running on port %d', 3005);
...