2017-08-09 52 views
0

我正在嘗試保存用戶並同時註冊它。我有麻煩同時做兩個。
我目前的架構:創建用戶並使用passport.js進行身份驗證

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"); 
    }); 
}); 

我遇到的問題是,當我提交,用戶保存的鹽,哈希,用戶名,並設置播放器爲「true」,但它不會保存lastName或firstName,並且會出現錯誤的請求(400)。我可以做一個User.Create並保存所有內容(減去散列和鹽)並重定向。我也可以將表單設置爲「user [username]」和「user [password]」爲「username」和「password」,並保存除firstName和lastName以外的所有內容,並且它將在沒有400狀態的情況下正確重定向。我曾嘗試更改「usernameField」和「passwordField」的默認輸入,但我沒有運氣。我試圖看看各種SO帖子,最近我發現是一個類似的建議,以改變默認值,所以也許我做錯了。我也嘗試重定向到不同的路線,但仍然沒有運氣。

這是我工作過的第一個不是代碼的項目,我試圖儘可能具體地描述所有事情,並且一直在努力工作八個小時。謝謝你的幫助!

回答

0

您必須指定不同的參數

var newUser = new User({ username: req.body.user.email, 
         firstName: req.body.user.firstName, 
         lastName: req.body.user.lastName}); 
+0

好的幫助。謝謝。 –