Javascript Express APP如何将用户从服务器端重定向到/:id路径
我正在学习Node.js,我发现将用户重定向到:id路径有一些问题。我想在那里打印他的用户名。 因此,要做一个概述,它是一个带有表单的登录页,在这里我需要一个别名和一封电子邮件。当用户单击提交时,我想将他移动到/:id路径以打印其“用户名”。 我的代码如下:Javascript Express APP如何将用户从服务器端重定向到/:id路径,javascript,node.js,mongodb,express,Javascript,Node.js,Mongodb,Express,我正在学习Node.js,我发现将用户重定向到:id路径有一些问题。我想在那里打印他的用户名。 因此,要做一个概述,它是一个带有表单的登录页,在这里我需要一个别名和一封电子邮件。当用户单击提交时,我想将他移动到/:id路径以打印其“用户名”。 我的代码如下: var express = require("express"), app = express(), request = require("request"), mongoose = require("
var express = require("express"),
app = express(),
request = require("request"),
mongoose = require("mongoose"),
bodyParser = require("body-parser");
app.set("view engine", "ejs")
app.use(express.static("public"));
app.use(bodyParser.urlencoded({extended: true}));
mongoose.connect("mongodb://localhost/Scape_Room", {useNewUrlParser: true, useUnifiedTopology: true});
var userSchema = new mongoose.Schema({
email: String,
alias: String,
});
var user = mongoose.model ("user",userSchema);
app.get("/", function(req, res){
res.render("index")
})
app.post("/newuser", function(req,res){
var name = req.body.name;
var email = req.body.email;
var newUser = {name:name, email:email}
user.create(newUser, function(err,newlyUser){
if(err){
console.log(err)
} else {
res.redirect("/start/:id")
}
})
})
app.get("/start/:id", function(req,res){
user.findById(req.params.id, function(err, foundUser){
if(err){
console.log(err)
} else{
res.render("startPoint", {user:foundUser})
}
})
})
app.listen(3000, function(err){
console.log("Server listening")
})
错误如下:{CastError:Cast to ObjectId对于模型“user”的路径“\u id”处的值“:id”失败
我试过:
-要将路径更改为:\u id
-将开始/添加到路由中当您使用
重定向()
方法时,必须传递真实的路由url,而不是id
使用node.js最佳实践完成代码
const express=require(“express”)
常量请求=要求(“请求”);
const mongoose=需要(“mongoose”);
const bodyParser=require(“body parser”);
常量app=express();
应用程序集(“查看引擎”、“ejs”)
应用程序使用(快速静态(“公共”);
use(bodyParser.urlencoded({extended:true}));
猫鼬。连接(“mongodb://localhost/Scape_Room“,{useNewUrlParser:true,useUnifiedTopology:true});
const userSchema=new mongoose.Schema({
电子邮件:String,
别名:String,
});
const user=mongoose.model(“user”,userSchema);
应用程序获取(“/”,函数(请求,恢复){
res.render(“索引”);
});
app.post(“/newuser”),函数(req,res){
const{name,email}=req.body;
如果(!name | |!电子邮件){
//在这里,您必须处理缺少的req.body。现在让我们记录控制台
日志(“名称-电子邮件丢失!”);
返回res.end();
}
const newUser={name:name,email:email}
create(newUser,函数(err,newlyUser){
如果(错误){
控制台日志(err);
返回res.end();
}
如果(!newlyUser){
log(“无法保存用户!”);
返回res.end();
}
如果(!newlyUser.id){
log(“未找到用户id”);
返回res.end();
}
res.redirect(`/start/${newlyUser.id}`);
});
});
app.get(“/start/:id”),函数(req,res){
user.findById(req.params.id,函数(err,user){
如果(错误){
控制台日志(err);
}否则{
res.render(“startPoint”,{user});
}
})
})
应用程序监听(3000,功能(错误){
log(“服务器侦听”)
});
使用下面的方法
app.post("/newuser", function(req,res){
var name = req.body.name;
var email = req.body.email;
var newUser = {name:name, email:email}
user.create(newUser, function(err,newlyUser){
if(err){
console.log(err)
} else {
res.redirect(`/start/${newlyUser._id}`)
}
})
})
您需要将“:id”替换为新创建用户的实际id=>res.redirect(“/start/:id”)。我发现您没有可以处理(“/start/:id”)的路由。您必须创建一个可以处理动态“id”的路由,无论您提供什么。此路由不处理动态“id”?-->app.get(“/start/:id”),函数(req,res){成功了!谢谢你的回答:)成功了!谢谢你的回答:)