Как перенаправить на предыдущий маршрут с данными из текущего маршрута в экспресс? - PullRequest
2 голосов
/ 26 октября 2019

У меня есть веб-сайт помощника по сборке ПК. На домашней странице есть список категорий. Я нажимаю кнопку «Выбрать» для категории, и я перехожу на страницу, где есть список продуктов этой категории. Я выбираю продукт, щелкая по нему, и он должен вернуться на мою домашнюю страницу, и название продукта должно быть напечатано рядом с этой категорией.

Я делаю это с использованием узлов 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.

...