2013-10-26 89 views
0

護照,本地新用戶下面是一個新用戶代碼:創建使用MongoDB的和Node.js的

var User = mongoose.model('User', userSchema); 
var usr = new User({ username: 'bob', email: '[email protected]', password: 'secret' }); 

下面是檢查登錄的代碼。

passport.use(new LocalStrategy(function(username, password, done) { 
    User.findOne({ username: username }, function(err, user) { 
    if (err) { return done(err); } 
    if (!user) { return done(null, false, { message: 'Unknown user ' + username }); } 
    user.comparePassword(password, function(err, isMatch) { 
     if (err) return done(err); 
     if(isMatch) { 
     return done(null, user); 
     } else { 
     return done(null, false, { message: 'Invalid password' }); 
     } 
    }); 
    }); 
})); 

如果username不存在,它說:"Unknown user __________"

與其說unknown user的,我想創建在數據庫中的新用戶。我如何修改這段代碼來做到這一點?

我想用他們輸入的登錄信息創建一個新用戶,如果該登錄名不存在。

更新

我想這個,它不工作。 bob5不保存到數據庫。

passport.use(new LocalStrategy(function(username, password, done) { 
    User.findOne({ username: username }, function(err, user) { 
    if (err) { return done(err); } 
if (!user) { usr = new User({ username: 'bob5', email: '[email protected]', password: 'secret' }); 
usr.save(function(err) { 
    if(err) { 
    console.log(err); 
    } else { 
    console.log('user: ' + usr.username + " saved."); 
    } 
}); 

如果我輸入這個,bob99會被保存到數據庫。所以我可以創建一個用戶...我只需要在if語句中將參數傳遞給它(我認爲)。

usr = new User({ username: 'bob99', email: '[email protected]', password: 'secret' }); 
usr.save(function(err) { 
    if(err) { 
    console.log(err); 
    } else { 
    console.log('user: ' + usr.username + " saved."); 
    } 
}); 
+1

所以呢?而不是'return done(...)'做一個插入。 –

+0

我不知道如何執行「新用戶」命令,它表示返回完成。你能告訴我適當的語法嗎?我會給你一個upvote :) –

+0

難道我不需要通過用戶在那裏作爲參數? –

回答

6
passport.use(new LocalStrategy(function(username, password, done) { 

    User.findOne({ username: username }, function(err, user) { 

    if (err) { return done(err); } 

    if (!user) { 
     usr = new User({ username: 'bob99', email: '[email protected]', password: 'secret' }); 
     usr.save(function(err) { 
     if(err) { 
       console.log(err); 
     } else { 
       console.log('user: ' + usr.username + " saved."); 
     } 
     }); 

    } 

    user.comparePassword(password, function(err, isMatch) { 
     if (err) return done(err); 
     if(isMatch) { 
     return done(null, user); 
     } else { 
     return done(null, false, { message: 'Invalid password' }); 
     } 
    }); 
    }); 
})); 
+0

謝謝,瓦爾丹!你可以請包括代碼來創建用戶?我不確定如何傳遞參數/參數。 –

+0

在您上面更新的代碼中,您試圖保存bob5時,括號沒有正確關閉。檢查他們。 – Vardan

+0

我也更新了我的代碼。檢查它的工作。 – Vardan