Как получить доступ к параметрам в текущем URL в экспресс-функции бэкэнда? (Смотри описание) - PullRequest
0 голосов
/ 07 января 2019

Хорошо, поэтому я не могу понять, как это объяснить. По сути, я пишу простое экспресс-приложение, которое запрашивает API OMDB для поиска названия фильма и возврата результатов. Теперь API OMDB отправляет результаты в виде страниц с 10 результатами на страницу.

Это мой файл app.js

let express = require("express");
let app = express();
let request = require("request");

app.set("view engine", "ejs");

let query = "";
let page = 1;

app.get("/", (req, res) => {
    res.render("search");
});

app.get("/results", (req, res) => {
    if(req.query.search){
        query = req.query.search;
    }
    if(req.query.page){
        page = req.query.page;
    }else{
        page = 1;
    }
    console.log(query);
    console.log(page);
    let url = "http://omdbapi.com/?apikey=thewdb&s=" + query + "&page=" + page;
    request(url, (error, response, body) => {
        if(!error && response.statusCode == 200){
            let data = JSON.parse(body);
            res.render("results", {data: data});
        }
    });
});

app.listen(process.env.PORT, process.env.IP, () => {
    console.log("Server Started");
});

Это мой файл search.ejs

<h1>Search for a Movie</h1>

<form action="/results" method="GET">
    <input type="text" placeholder="search term" name="search">
    <input type="submit">
</form>

А это мой файл results.ejs

<h1>Results of Search</h1>

<ul>
    <% data["Search"].forEach((movie) => { %>
        <li> 
            <strong><%= movie["Title"] %></strong> - <%= movie["Year"] %> 
        </li>
    <% }); %>
</ul>

<form action="/results" method=GET>
    <input type="text" name="page" placeholder="Page">
    <input type="submit">
</form>

<a href="/">Search Again</a>

Это работает, когда пользователь может ввести номер страницы на странице результатов и перейти на следующую страницу. Однако, что происходит, когда я отправляю обратно номер страницы, поисковый запрос теряется. Сейчас мое решение состоит в том, чтобы определить глобальную переменную и отслеживать запрос таким образом, но есть ли правильный способ сделать это?

Я недавно начал изучать бэкэнд-разработку, поэтому я очень новичок в выражениях и узлах.

1 Ответ

0 голосов
/ 07 января 2019

Сейчас мое решение состоит в том, чтобы определить глобальную переменную и отслеживать запрос таким образом

Не делай этого.

Вы получите условия гонки. И межпользовательское загрязнение.


Просто поместите запрос в форму.

<input type="hidden" name="query" value="...">
...