2013-10-26 43 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