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

Я создаю веб-сайт, помогающий настроить компьютер. На моей домашней странице у меня будет список категорий продуктов, таких как Процессор, Материнская плата, как на первом изображении. Как вы можете видеть, я выполнил свой код JS, используя узел js, и команда была "nodemon run.js". В адресной строке вы можете увидеть localhost: 3000, что означает, что я дал ему порт 3000, и эта страница загружена на мой домашний маршрут. Изображение для домашнего маршрута или маршрута по умолчанию

Рядом с каждой записью, т.е. Процессор материнской платы вы можете увидеть фиолетовую кнопку. Также текст с надписью «Не указано», который является текстом тега абзаца. Я нажму эту кнопку «выбрать» рядом с процессором, и я перейду к маршруту «/ product», который я определил для продуктов процессора. В / product route мы получаем список всех товаров выбранной нами категории. Второе изображение показывает только эту страницу / маршрут продукта. Изображение для / маршрута продукта

Теперь, нажав кнопку выбора, я выберу этот продукт в списке. Вот где сложная часть. Я хочу выбрать этот продукт, и как только я выберу этот продукт, он должен перенаправить меня на домашний маршрут, где вы увидите localhost: 3000, что означает, что я вернулся на домашний маршрут, и показывает страницу со всеми категориями, т.е. Процессор, материнская плата. Но на этот раз, так как я выбрал продукт из / product route, название продукта должно отображаться вместо текста «Not Specified». Помните, что это был текст в элементе списка?

Теперь, что я сделал, я отобразил эти данные в маршрут / product, а домашняя страница была преобразована в этот маршрут / product. Потому что для перехода на домашний маршрут мне нужно использовать res.redirect, и это приведет меня к домашнему маршруту. Но я не смогу получить данные, полученные по маршруту "/ product", и отобразить их в тексте. На третьем изображении отмечена область, в которой показан маршрут «/ product», а домашняя страница загружена в маршрут «/ product». Выбранные мной данные помещаются в текст «Не указано», но они не перенаправляются на домашний маршрут, а только на домашнюю страницу, отображаемую в маршрут «/ product». Это не то, что я хочу. Может отображать имя там, но это все еще / маршрут продукта, который я хочу быть домашним маршрутом

Я хочу перенаправить на свой домашний маршрут с даннымиЯ выбрал маршрут «/ product», чтобы преобразовать эти данные в текст «Не указано», который у меня есть на первом изображении.

Ниже приведен весь код, который я написал в качестве примера для выполнения этой работы. Это все еще не завершено. Мне просто нужна помощь по частям app.get и app.post, в которых я рендерим эти данные в маршрут.

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 processorArray = [item1];

//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

На главной странице у меня есть тег абзаца, вставленный в данные таблицы, использующие EJS, чтобыимя, которое я получаю из "/ product", может быть отображено в этом тексте. Первоначально это было бы «Не указано».

Для страницы продукта я также использовал EJS, чтобы название продукта, цена, данные можно было поместить из базы данных.

страница на «/ product»На маршруте отображается список товаров в выбранной нами категории. Пожалуйста, помогите мне, чтобы я мог выбрать элемент из этого списка, используя кнопку «выбрать», и я могу взять эти данные, перенаправить на домашний маршрут, где находится домашняя страница, и отобразить данные, которые я получил в этот тег абзаца, чтобы вместо «Не указано»он показывает название выбранного продукта.

Пожалуйста, сообщите мне, если я пропустил какие-либо детали, и вам нужно более подробное объяснение того, что я собираюсь сделать здесь. Заранее спасибо. Кроме того, я не совсем уверен, что искать в Google по поводу этой проблемы, поэтому скажите мне ключевые слова, которые мне нужно искать в Google, чтобы я мог изучить его самостоятельно.

...