我正在建立一个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中搜索的关键字,以便自己学习。