Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/455.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/42.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 重定向到主路由时,如何渲染从当前路由选择的数据?_Javascript_Node.js_Mongodb_Express_Ejs - Fatal编程技术网

Javascript 重定向到主路由时,如何渲染从当前路由选择的数据?

Javascript 重定向到主路由时,如何渲染从当前路由选择的数据?,javascript,node.js,mongodb,express,ejs,Javascript,Node.js,Mongodb,Express,Ejs,我正在建立一个个人电脑安装帮助网站。在我的主页上,我会有一个产品类别的列表,例如处理器、主板之类的第一张图片。正如您所看到的,我已经使用NodeJS运行了我的JS代码,命令是“nodemon run.JS”。在地址栏中,你可以看到localhost:3000,这意味着我给了它端口3000,这个页面被加载到我的主路由上 在每个条目(即处理器、主板)旁边,您可以看到一个紫色按钮。另一个文本表示“未指定”,这是一个段落标记文本。我将单击处理器旁边的“选择”按钮,它将带我到我为处理器产品定义的“/pro

我正在建立一个个人电脑安装帮助网站。在我的主页上,我会有一个产品类别的列表,例如处理器、主板之类的第一张图片。正如您所看到的,我已经使用NodeJS运行了我的JS代码,命令是“nodemon run.JS”。在地址栏中,你可以看到localhost:3000,这意味着我给了它端口3000,这个页面被加载到我的主路由上

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

现在,单击选择按钮,我将在列表中选择该产品。这就是棘手的部分。我想选择该产品,一旦我选择了该产品,它就会将我重定向到主路由,在那里你会看到localhost:3000,这意味着我回到主路由,它会显示包含所有类别的页面,即处理器、主板。但这一次,由于我从/product-route中选择了一个产品,因此产品的名称应该显示在“Not-Specified”文本的位置。还记得这是列表元素中的文本吗

现在我所做的是,我将数据呈现到/product路径,并且主页也呈现到这个/product路径中。因为我必须使用res.redirect,才能到达主路线。但我无法获取从“/product”路径获取的数据并将其呈现在文本中。第三幅图像有一个区域标记,显示“/product”路线,主页加载到“/product”路线中。我选择的数据放在“未指定”文本上,但这不会重定向到主路径,而只是呈现到“/product”路径中的主页。这不是我想要的

我想重定向到我的主路径,使用我从“/product”路径中选择的数据,将此数据呈现到第一幅图像上的“未指定”文本中

下面是我作为示例编写的整个代码。它还没有完成。我只需要app.get和app.post部分的帮助,在这些部分中我将这些数据渲染到route中

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”路线上的页面显示了我们所选类别下的产品列表。请帮助我,以便我可以使用“选择”按钮从该列表中选择一个元素,然后我可以获取该数据,重定向到主页所在的主路线,并将我获取的数据呈现到该段落标记中,从而显示所选产品的名称,而不是“未指定”


请通知我,如果我错过了任何细节,你需要一个更详细的解释我的目标在这里做什么。先谢谢你。此外,我也不太确定在谷歌上搜索什么来解决这个问题,所以请告诉我需要在谷歌上搜索哪些关键字,这样我就可以自己学习了。

将选定的引用存储在cookie中不是更容易吗?这样,如果用户选择了CPU、主板、RAM、GPU,并意外地在浏览器中点击“Back”,他们就不必从头开始重新启动。然后,您可以在请求
/
页面时读取该cookie,并填写组件。允许用户重置此选择(删除cookie),如果下了订单,请自动重置。我真的不知道如何使用cookie。我做这个是为了一个大学项目,我必须尽快提交。我只想知道如何从/product获取数据并在/route或home route上使用它