我正在尝试保存用户并同时注册它。我同时遇到麻烦 我目前的架构:
const userSchema = new mongoose.Schema({
username: String,
password: String,
firstName: String,
lastName: String,
player: {
type: Boolean,
default: true
}
});
userSchema.plugin(passportLocalMongoose);
module.exports = (User, "userSchema");
我目前的表格:
<form action="/player" method="POST">
<input type="text" name="user[username]" placeholder="username">
<input type="password" name ="user[password]" placeholder="password">
<input type="text" name="user[firstName]" placeholder="First Name">
<input type="text" name="user[lastName]" placeholder="Last Name">
<button>Submit</button>
</form>
我要求快递,护照,护照本地,护照本地猫鼬,身体解析器,猫鼬和我的模式。
之后我的app.js是:
mongoose.connect(database);
app.use(bodyParser.urlencoded({extended: true}));
app.use(require("express-session")({
secret: "Generic Secret Password",
resave: false,
saveUninitialized: false
}));
app.use(passport.initialize());
app.use(passport.session());
passport.use(new LocalStrategy(User.authenticate()));
passport.serializeUser(User.serialUser());
passport.deserializeUser(User.deserializeUser());
//route
app.post("/player", function(req, res){
var newUser = new User({ username: req.body.user.email });
User.register(newUser, req.body.user.password, function(err, user){
if(err){
console.log(err);
return res.render("new");
}
passport.authenticate("local")(req, res, function(){
res.redirect("/player");
});
});
我遇到的问题是,当我提交时,用户会保存salt,hash,username,并将播放器设置为&#34; true&#34;,但它不会保存lastName或firstName跟随一个错误的请求(400)。我可以做一个User.Create并保存所有内容(减去哈希和盐)并重定向。我也可以设置表格,以便&#34;用户[用户名]&#34;和&#34;用户[密码]&#34;是&#34;用户名&#34;和#34;密码&#34;并获得它保存除firstName和lastName之外的所有内容,它将正确地重定向而不具有400状态。我尝试更改&#34; usernameField&#34;的默认输入。和#34; passwordField&#34;,但我没有运气。我试图查看各种SO帖子,我发现最接近的是更改默认值的类似建议,所以也许我做错了。我也试图重定向到不同的路线,但仍然没有运气。
这是我工作过的第一个不是代码的项目,我试图在所有事情上尽可能具体,我一直在努力争取一个坚实的八小时。谢谢你的帮助!
答案 0 :(得分:0)
您必须指定不同的参数
var newUser = new User({ username: req.body.user.email,
firstName: req.body.user.firstName,
lastName: req.body.user.lastName});
答案 1 :(得分:0)
您必须在此处指定名字和姓氏var newUser = new User({ username: req.body.user.email, firstname: req.body.user.firstname, lastname:req.body.user.lastname});