Хорошо, поэтому я не могу понять, как это объяснить. По сути, я пишу простое экспресс-приложение, которое запрашивает 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>
Это работает, когда пользователь может ввести номер страницы на странице результатов и перейти на следующую страницу. Однако, что происходит, когда я отправляю обратно номер страницы, поисковый запрос теряется. Сейчас мое решение состоит в том, чтобы определить глобальную переменную и отслеживать запрос таким образом, но есть ли правильный способ сделать это?
Я недавно начал изучать бэкэнд-разработку, поэтому я очень новичок в выражениях и узлах.