护照,本地新用户下面是一个新用户代码:创建使用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 :) –
难道我不需要通过用户在那里作为参数? –