Javascript Express APP如何将用户从服务器端重定向到/: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("

我正在学习Node.js,我发现将用户重定向到:id路径有一些问题。我想在那里打印他的用户名。 因此,要做一个概述,它是一个带有表单的登录页,在这里我需要一个别名和一封电子邮件。当用户单击提交时,我想将他移动到/:id路径以打印其“用户名”。 我的代码如下:

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){成功了!谢谢你的回答:)成功了!谢谢你的回答:)