重定向到归属路线时,如何呈现从当前路线中选择的数据?

时间:2019-10-25 22:50:19

标签: javascript node.js mongodb express ejs

我正在建立一个PC安装帮助网站。在我的首页中,我会列出产品类别,例如处理器,主板(如第一张图片)。如您所见,我已经使用node js运行了我的JS代码,命令是“ nodemon run.js”。在地址栏中,您可以看到localhost:3000,这意味着我给了它3000端口,并且此页面已加载到我的本地路由中。Image for Home route or default route

在每个条目(即处理器,主板)旁边,您都可以看到一个紫色按钮。也有文字“未指定”,这是一个段落标签文字。我将单击处理器旁边的“选择”按钮,它将带我进入为处理器产品定义的“ /产品”路由。在/ product route中,我们获得了所选类别的所有产品的列表。第二张图片仅显示了/ product路线页面。 Image for /product route

现在,通过单击选择按钮,我将在列表中选择该产品。那就是棘手的部分。我想选择该产品,选择该产品后,它将立即将我重定向到本地路由,您会在其中看到localhost:3000,这意味着我回到了本地路由,并且显示了包含所有类别的页面,即处理器,主板。但是这一次,因为我已经从/ product路线中选择了一个产品,所以该产品的名称应显示在“未指定”文本的位置。还记得列表元素中的文字吗?

现在我要做的是,将数据渲染到/ product路由,并将主页也渲染到/ product路由。因为要转到本国路线,我必须使用res.redirect,这将带我到本国路线。但是,我将无法从“ / product”路由中获取数据并将其呈现为文本。第三张图片的区域标记为“ / product”路线,并且主页已加载到“ / product”路线。我选择的数据放在“未指定”文本上,但这不会重定向到起始路径,而只是呈现到“ / product”路径的主页。这不是我想要的。Can render the name on there but it's still /product route which I want to be home route

我想使用从“ /产品”路由中选择的数据重定向到我的本地路由,将此数据渲染为我在第一张图片上显示的“未指定”文本。

下面是我作为示例编写的整个代码。还没有完成。我只想在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中搜索的关键字,以便自己学习。

0 个答案:

没有答案