Everyauth, первый вход в систему работает, второй не удается - PullRequest
1 голос
/ 25 сентября 2011

Используя 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);

}
})

Я использую мангуста и экспресс.

1 Ответ

3 голосов
/ 25 сентября 2011

Не проверено, но, глядя на ваш код, похоже, что вам нужно изменить эту строку:

user = result.doc;

к этому:

user = result;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...