使用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并表达。
答案 0 :(得分:3)
未经测试,但从查看代码来看,您似乎需要更改此行:
user = result.doc;
到此:
user = result;