Почему мой запрос ajax GET возвращается с пустым массивом?

#html #jquery #sql #get

Вопрос:

Я запрашиваю у AWS Athena, используя athena-express. Я использую метод get для возврата определенных данных и вызов AJAX в интерфейсе для запуска запроса, когда пользователь вводит определенное значение с помощью ввода req.body. Когда я делаю этот ввод в postman, я успешно возвращаю данные. Однако, когда я пытаюсь сделать это с помощью вызова AJAX, я просто получаю пустой массив. Я не уверен, правильно ли я ввожу значение req.body.

Это конфигурация athena с запросом внизу.

 require('dotenv').config()

const AthenaExpress = require("athena-express"),
    aws = require("aws-sdk"),
    awsCredentials = {
        region: process.env.REGION,
        accessKeyId: process.env.ACCESSKEY,
        secretAccessKey: process.env.SECRETACCESSKEY
    };

aws.config.update(awsCredentials);

//AthenaExpress config object
const athenaExpressConfig = {
    aws, /* required */
    // s3: process.env.S3BUCKET, /* optional */
    db: process.env.ATHENADB, /* optional */
    formatJson: true, /* optional default=true */
    retry: 200, /* optional default=200 */
    getStats: false /* optional default=false */
}


//Initializing AthenaExpress
const athenaExpress = new AthenaExpress(athenaExpressConfig);

module.exports = {

    getData: async (req, res) => {
        const { building_abbreviation } = req.body
        try {
            // I know this is a bad way of inputting variables for a query, but this is the only way I can do it using athena-express
            let results = await athenaExpress.query(`SELECT * FROM building_meter_metadata WHERE building_abbreviation = '${building_abbreviation}' ORDER BY building_abbreviation`)                  
            console.log(results)
            return res.json(results)
       } catch (error) {
            console.log(error)
        }
    }
}

 

Это экспресс — маршрут

 const router = require('express').Router()
const athenaController = require('../config/athena')

router.get('/getathena', athenaController.getData)

module.exports = router
 

Это вызов ajax

   $('.search').on('click', function (e) {
        e.preventDefault();
        console.log($(".building").val()) //This is the value that should be passed to building_abbreviation as req.body
        $.ajax({
            url: '/getathena',
            method: 'GET',
            data: {
                building_abbreviation: $('.building').val()
            }
        }).then(response => {
            console.log(response);
        })
    })
 

This is the HTML, just a simple select dropdown with a few building names to test receiving data.

 <div class="input-group mb-3">
                <label class="input-group-text" for="inputGroupSelect01">Options</label>
                <select name="building_abbreviation" class="form-select building" id="inputGroupSelect01">
                    <option selected>Choose...</option>
                    <option>ACB</option>
                    <option>ADH</option>
                    <option>AHG</option>
                </select>
                <button class="btn btn-outline-secondary search" type="button">Search</button>
            </div>
 

И в консоли я возвращаю пустой массив, однако, когда я запускаю запрос в postman, я возвращаю правильные данные. Изображение ниже

 ACB //This is the value that should be passed to building_abbreviation as req.body
{
    "Items": []
}
 

Я очень ценю любые советы о том, что я делаю неправильно!

введите описание изображения здесь

Комментарии:

1. У запросов на ПОЛУЧЕНИЕ нет тела запроса — попробуйте вместо этого ОПУБЛИКОВАТЬ СООБЩЕНИЕ

2. Спасибо, что это были мои проблемы, я даже не думал о ПОСТЕ. Вупс лол