从AWS数据库查询字符串搜索

时间:2020-03-16 11:24:47

标签: javascript reactjs amazon-web-services express fetch

我正在使用搜索输入,获取和反应挂钩来查询用户的AWS数据库。为了使它正常工作,我必须设置一个单独的快递服务器并对此进行提取请求,因为AWS存在CORS问题,解决的方法很少。

我的提取请求...

https://cdnjs.cloudflare.com/ajax/libs/crypto-js/4.0.0/crypto-js.min.js

如果我像这样在快递服务器上对查询进行硬编码...

    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
    }

它起作用了,控制台输出是...

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);

匹配是Bob用户的数组,但是当我将查询字符串传递给我的提取时 请求,它不会返回任何结果

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);

我确定最好的查询方法是将其包含在获取请求中,但是我不确定为什么它不起作用。如果有人可以说出任何信息,我将不胜感激。

1 个答案:

答案 0 :(得分:0)

您在做什么http://localhost:3005/search?q= $ {query},这是从前端进行的,但未将其用作aws url中的req.query.q。

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);
相关问题