Mongoose findOne callback in passport strategy never returns

Viewed 339

I'm trying to pick up web development again and I've run into a problem in my passport strategy where I call User.findOne() to check if a name or email is already in use. The console.log right before it prints, but the console.log in the callback function does not. Nothing crashes.

Mongoose reports a successful connection to Mongodb (free atlas sandbox) when I launch the server.

How could I troubleshoot this further?

    passport.use('local-signup', new LocalStrategy({
        usernameField : 'signup[email]',
        passwordField : 'signup[password]',
        passReqToCallback : true
    },
    function(req, email, password, done) {
        process.nextTick(function() {
        console.log('passport strategy local-signup: req.body.signup:', req.body.signup );
        User.findOne({$or: [
            { 'email': email },
            { 'name': req.body.signup.name }
            ]}, function(err, user) {
            console.log("FORTY TWO SV");
            if (err) return done(err);
            if (user && (user.name === req.body.signup.name)) {
                return done(null, false, { message: 'User name already taken.' });
            } else if (user && (user.email === email)) {
                return done(null, false, { message: 'An account with the email address already exists' });
            } else if (req.body.signup.password !== req.body.signup.verify) {
                return (done(null, false, { message: "The passwords don't match!"}));
            } else {
                var newUser = new User();
                newUser.email    = email;
                newUser.name     = req.body.signup.name;
                newUser.password = newUser.generateHash(password);
                console.log("new user being created!", newUser);
                return done(null, newUser);
                // newUser.save(function(err) {
                //     if (err) throw err;
                //     console.log('Created new user', newUser);
                //     return done(null, newUser);
                // });
            }
        });
    });
}));

How I connect to the database:

// Connect to the database.
mongoose.connect(config.mongoUri, { useMongoClient: true });
mongoose.connection.on('error', console.error.bind(console, 'Connection error!'));
mongoose.connection.once('open', function(){
  console.log("MongoDB connected successfully");
});

The full project code is here if I've left out something potentially useful: https://github.com/brianbauer42/InfinitePlaylist/blob/master/server.js

Any tips will would be highly appreciated, thank you!

0 Answers
Related