Используя everyauth, при первом входе в систему пользователь добавляет профиль в мой mongodb через mongoose, и сессия работает хорошо. Во второй раз, когда пользователь пытается войти, сервер падает со следующей ошибкой:
/ мнт / WS / пользователей / guiomie / 70543 / node_modules / everyauth / Библиотека / модули / 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
в [объект объекта] .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
в [объект объекта]. Обратный вызов
(/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
в [объект объекта] .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
в [объект объекта] .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);
}
})
Я использую мангуста и экспресс.