Иметь простое приложение для аутентификации, которое подключается к Google OAuth и затем сохраняет пользователя в БД. Это приложение Node с экспрессом, паспортом и MongoDB / Mongoose.
после звонка в Google и выбора правильной учетной записи, я получаю данные обратно и пытаюсь сохранить их в своей БД, которая размещена в MongoDB Atlas (версия 4.03). База данных пуста, поэтому у нее не должно быть существующего пользователя, однако она, похоже, попадает в строку const existingUser
и просто зависает навсегда, без сообщений об ошибках или чего-либо еще. Когда я удаляю существующего пользователя и просто пытаюсь создать нового пользователя, он делает то же самое и зависает. Я вышел из системы пользовательского экземпляра, и он выглядит правильно с перечисленными необходимыми функциями. Я определенно подключен к БД.
const mongoose = require('mongoose');
const passport = require('passport');
const GoogleStrategy = require('passport-google-oauth20').Strategy;
const keys = require('../config/keys');
const User = mongoose.model('users');
passport.use(new GoogleStrategy({
clientID: keys.googleClientID,
clientSecret: keys.googleClientSecret,
callbackURL: '/auth/google/callback',
proxy: true,
}, async (accessToken, refreshToken, profile, done) => {
const userObject = {
id: profile.id,
externalAccounts: [{
google: [{
id: profile.id,
displayName: profile.displayName,
}]
}]
}
const existingUser = await User.findOne({ id: profile.id });
if (existingUser) {
console.log('found existing user');
return done(null, existingUser);
}
const user = await new User(userObject).save();
console.log('created new user', user);
done(null, user);
})
);