Passportjs文档 – function的意义

在这个Passportjs.org页面上,文档给出了一个使用LocalStrategy的例子,在LocalStrategy中它调用一个函数:

User.findOne({ username: username }, function (err, user) { if (err) { return done(err); } if (!user) { return done(null, false, { message: 'Incorrect username.' }); } if (!user.validPassword(password)) { return done(null, false, { message: 'Incorrect password.' }); } return done(null, user); }); 

现在,我看到这个“ User ”对象出现在多个地方,例如passport-windowsauth策略的文档,在这个例子中使用了以下函数:

 User.findOrCreate() 

所以现在我想知道我是否疯了。

这个'用户'对象和它的function是一些现有的框架或function集,或者这些只是你自己的寻找用户的本土function的例子吗?

用户是包含用户信息的对象,findOne或findById或findByusername只是与此对象关联的原型函数。

他们已经为所有的例子提供了一个用户模式( Mongoose用户模式)。 它附带了所有提到的原型function

从他们的工作示例(没有Mongoose模式):
https://github.com/jaredhanson/passport-local/tree/master/examples/express3

在链接到期时添加代码:

 var users = [ { id: 1, username: 'bob', password: 'secret', email: 'bob@example.com' } , { id: 2, username: 'joe', password: 'birthday', email: 'joe@example.com' } ]; function findById(id, fn) { var idx = id - 1; if (users[idx]) { fn(null, users[idx]); } else { fn(new Error('User ' + id + ' does not exist')); } } function findByUsername(username, fn) { for (var i = 0, len = users.length; i < len; i++) { var user = users[i]; if (user.username === username) { return fn(null, user); } } return fn(null, null); } passport.use(new LocalStrategy( function(username, password, done) { process.nextTick(function () { findByUsername(username, function(err, user) { if (err) { return done(err); } if (!user) { return done(null, false, { message: 'Unknown user ' + username }); } if (user.password != password) { return done(null, false, { message: 'Invalid password' }); } return done(null, user); }) }); } )); 

参考:
https://github.com/jaredhanson/passport-local/tree/master/examples/express3