Невозможно получить запрошенный API в express.js - PullRequest
0 голосов
/ 22 мая 2018

Вот мой экспресс-код приложения

app.get('/books',function(req,res){
    var {keyword} =req.query;
    connection.query('SELECT * from books', function (error, results, fields) {
        if (error) throw error;
        for(let result of results){
            if(result.title === keyword){
                res.send(result);
            }
        }
    });
});

и URL, который я запрашиваю: http: //......../books/keyword=intro.Где intro - это пользовательский ввод.

Здесь я пытаюсь добиться ввода информации в HTML, чтобы взять эту информацию и отправить ее в мой API, чтобы он мог запрашивать мою БД и получать то, чтоя хочу.

Но я получаю ошибку 404, поэтому я думаю, что мой API настроен неправильно.

Есть ли лучший способ реализовать то, что я делаю?

keyword=intro даже правильный способ запроса моей базы данных.

Мой HTML такой

<!DOCTYPE html>

</head>




<body>
    <div id="data"> 
        <input type="button" id="button" value="Click"/>
        <input type="text" id="search" >
    </div>
    <div id="search">

    </div>

    <script>
        document.getElementById('button').addEventListener('click',getUserInput);
        function getUserInput(event){
            var userInput = document.getElementById("search").value;
            if(userInput !== ""){
                httpGetAsync(userInput);
            }
        }

        function httpGetAsync(searchTerm){
            var theUrl = 'books?keyword=' + searchTerm;
            const xhttp = new XMLHttpRequest();
            xhttp.open("GET", theUrl, true); // true for asynchronous 
            xhttp.send(null);
            xhttp.onreadystatechange = processRequest;

            function processRequest() {

                if (xhttp.readyState == XMLHttpRequest.DONE);
                var result = JSON.parse(xhttp.response);
                console.log(result);
        }}

    </script>

</body> 

Ответы [ 2 ]

0 голосов
/ 22 мая 2018

Этот ответ является скорее комментарием, если он неприемлем.Утверждение, которое я хочу написать, слишком длинное для комментария.

Что касается моего ответа, является ли это верным способом написания вашей подготовленной модели выписки?Как я пишу, мои модели SQL похожи на это и работают нормально.Получаете ли вы какие-либо ошибки из своего синтаксиса SQL?

Обратите внимание на квадратные скобки после ?.

    selectBooks: function(data, callback) {
        let keyword = "%" + req.query + "%";
        connection.query("SELECT * FROM books WHERE title LIKE ?", [keyword], callback);
    }
0 голосов
/ 22 мая 2018

В функции httpGetAsync замените

var theUrl = 'books/keyword=' + searchTerm;

на:

var theUrl = window.location + '/books/keyword=' + searchTerm;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...