護照,本地新用戶下面是一個新用戶代碼:創建使用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.");
}
});
所以呢?而不是'return done(...)'做一個插入。 –
我不知道如何執行「新用戶」命令,它表示返回完成。你能告訴我適當的語法嗎?我會給你一個upvote :) –
難道我不需要通過用戶在那裏作爲參數? –