MongoDB Atlas Cant与数据库交互

时间:2018-11-02 12:45:26

标签: node.js express google-authentication mongodb-atlas

具有一个简单的身份验证应用程序,该应用程序连接到Google OAuth,然后将用户保存到数据库中。它是Express,Passport和MongoDB / Mongoose的Node应用。

致电Google并选择正确的登录帐户后,我收到了返回的数据,并尝试将其保存到MongoDB Atlas(版本4.03)托管的数据库中。数据库为空,因此它不应该有现有用户,但是它似乎进入了const existingUser行,并且永远挂起,没有错误消息或其他任何内容。当我删除existingUser并尝试创建新用户时,它执行相同的操作并挂起。我已经注销了User实例,并且使用列出的必要功能它看起来正确。肯定也连接到数据库。

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);
    })
);

0 个答案:

没有答案