Everyauth,第一次登录工作,第二次失败

时间:2011-09-25 16:09:07

标签: mongodb node.js express mongoose

使用everyauth,用户首次登录时,会通过mongoose将个人资料添加到我的mongodb,并且会话运行良好。用户第二次尝试登录时,服务器崩溃并出现以下错误:

  

/mnt/ws/users/guiomie/70543/node_modules/everyauth/lib/modules/everymodule.js:352   扔错了;

     

^ TypeError:无法读取未定义的属性“id”   Object._addToSession   (/mnt/ws/users/guiomie/70543/node_modules/everyauth/lib/modules/oauth2.js:195:46)   在Object.exec   (/mnt/ws/users/guiomie/70543/node_modules/everyauth/lib/step.js:48:21)   在   /mnt/ws/users/guiomie/70543/node_modules/everyauth/lib/stepSequence.js:19:38   在[object Object] .fulfill   (/mnt/ws/users/guiomie/70543/node_modules/everyauth/lib/promise.js:42:25)   在   /mnt/ws/users/guiomie/70543/node_modules/everyauth/lib/stepSequence.js:22:23   在[object Object] .callback   (/mnt/ws/users/guiomie/70543/node_modules/everyauth/lib/promise.js:13:12)   在   /mnt/ws/users/guiomie/70543/node_modules/everyauth/lib/stepSequence.js:21:23   在[object Object] .fulfill   (/mnt/ws/users/guiomie/70543/node_modules/everyauth/lib/promise.js:42:25)   在   /mnt/ws/users/guiomie/70543/node_modules/everyauth/lib/stepSequence.js:22:23   在[object Object] .fulfill   (/mnt/ws/users/guiomie/70543/node_modules/everyauth/lib/promise.js:42:25)

以下是我的代码:

.findOrCreateUser( function (session, accessToken, accessTokExtra, fbUserMetadata) {
//Verifies if user in database already
try{
var id = fbUserMetadata.id;
var promise = this.Promise();
User.findOne({ fbid: id}, function(err, result) {
var user;
if(!result) {
user = new User();
user.fbid = id;
user.firstName = fbUserMetadata.first_name;
user.lastName = fbUserMetadata.last_name;
user.save();
} else {
user = result.doc;
}
promise.fulfill(user);
});
return promise;
}
catch(err){
console.log(err);

}
})

我使用mongoose并表达。

1 个答案:

答案 0 :(得分:3)

未经测试,但从查看代码来看,您似乎需要更改此行:

user = result.doc;

到此:

user = result;
相关问题