У меня есть веб-сайт помощника по сборке ПК. На домашней странице есть список категорий. Я нажимаю кнопку «Выбрать» для категории, и я перехожу на страницу, где есть список продуктов этой категории. Я выбираю продукт, щелкая по нему, и он должен вернуться на мою домашнюю страницу, и название продукта должно быть напечатано рядом с этой категорией.
Я делаю это с использованием узлов js, express и ejs. У моей домашней страницы есть маршрут по умолчанию "/" (доступный, набрав localhost: 3000). Когда я нажимаю «Выбрать», он переходит к маршруту «/ product» (localhost: 3000 / product), и название категории находится вверху этой страницы. Я нажимаю на кнопку выбора продукта, она должна вернуться на домашнюю страницу по маршруту "/", показать название продукта рядом с категорией.
Я не могу этого сделать. Я не могу передать данные из маршрута "/ product" с помощью res.redirect () на мой маршрут "/" или домашнюю страницу. Вместо этого я перевел свою домашнюю страницу на маршрут "/ product". Таким образом, я могу использовать эти данные на этом маршруте. Я хочу иметь возможность перенаправить на свой домашний маршрут с данными, выбранными из маршрута "/ product", и хочу использовать эти данные в домашнем маршруте.
Я искал ссылки, такие как "Как передать данные на предыдущий маршрут, используяexpress and node js ", но не нашел ничего полезного для моего проекта.
const express = require("express");
const bodyParser = require("body-parser");
const mongoose = require("mongoose");
const app = express();
app.set('view engine', 'ejs');
app.use(bodyParser.urlencoded({extended: true}));
app.use(express.static("public"));
mongoose.connect("mongodb://localhost:27017/productDB", {useNewUrlParser: true});
//Database Part Start
const listProcessor = new mongoose.Schema({
name: String,
core: Number,
thread: Number
});
const ListProcessor = mongoose.model("ListProcessor", listProcessor);
const item1 = new ListProcessor({
name: "AMD Ryzen 5 3600",
core: 6,
thread: 12,
price: 17100
});
const item2 = new ListProcessor({
name: "AMD Ryzen 7 3700x",
core: 8,
thread: 12,
price: 30000
})
const processorArray = [item1, item2];
//Database Part end
//server part and get post part start
app.get("/", function(req, res){
res.render("buildown", {name: "Not Specified", price: "Not Specified"});
});
app.post("/", function(req, res){
const signal = req.body.choose;
if(signal === "cpu")
{
ListProcessor.find({}, function(err, items){
if(items.length === 0)
{
ListProcessor.insertMany(processorArray);
res.redirect("/product");
}
else{
res.redirect("/product");
}
});
}
});
app.get("/product", function(req, res){
res.render("list", {listTitle: "Processor", listOfProduct: processorArray}); //Using EJS passing data from processorArray
});
app.post("/product", function(req, res){
const nameItem = req.body.select;
ListProcessor.find({nameItem}, function(err, items){
console.log(items);
res.render("buildown", {name: nameItem, price: items.price});
});
});
app.listen(3000, function(){
console.log("Server Up and Running");
});
//Get Post part end
Этот код сначала отображает домашнюю страницу по маршруту" / ", с текстом категорий и не указано" рядом с категориями. После нажатияпри нажатии на кнопку, перенаправляет меня на маршрут «/ product» со списком данных из базы данных mongo DB, которую я создал здесь. После нажатия «Select» она переводит домашнюю страницу в этот маршрут «/ product» с указанием данных и названия продукта. текста «Не указано».
Это все нормально, но я не хочу отображать домашнюю страницу на этом маршруте. Вместо этого все это действие будет происходить по маршруту "/". Поэтому я бы выбрал данные из "/«Продукты», сразу же он будет перенаправлен на «/» маршрут, и я получу данные, выбранные из маршрута «/ продукт», и буду использовать их здесь.
Можете ли вы дать мне подсказку, как это сделать? Используя только экспресс и узел js.