user3241846
user3241846

Reputation: 677

Mongoose not interacting with DB

Code never executes to the console.log("in") so findOne is not being run. RoboT3 also doesnt show auth db. Mongo version is the latest 4.0.3.

controllers/authentication.js

const User = require('../models/user');

exports.signup = (req, res, next) => {
    console.log(req.body)
    const email = req.body.email;
    const password = req.body.password;
    // check for duplicate users by email
    User.findOne({email: email}, (err, existingUser) => { 
        console.log("in")
        if (err) {return next(err)}

        // if duplicate found, return error
        if (existingUser) {
            return res.status(422).send({error: 'Email is in use'});
        }

        const user = new User({
            email: email,
            password: password
        });

        user.save((err) => {
            if (err) {return next(err); }
            res.json(user);
        })

    });
    // if not, create and save record and return
}

index.js

const express = require('express');
const http = require('http');
const bodyParser = require('body-parser');
const morgan = require ('morgan');
const router = require('./router');
const mongo = require('mongodb');


mongo.connect('mongodb://localhost:27017/auth', { useNewUrlParser: true });

const App = express();
// App setup
App.use(morgan('combined'));
App.use(bodyParser.json());
router(App);

// Server setup
const port = process.env.PORT || 3090;
const server = http.createServer(App);

server.listen(port);

console.log("server running on port " + port);

router.js

const authentication = require('./controllers/authentication');

module.exports = function (app) {
    app.post('/signup', authentication.signup);
}

models/user.js

const mongoose = require('mongoose');
const Schema = mongoose.Schema;

const userSchema = new Schema ({
    email: {type: String, unique: true, lowercase: true},
    password: String
});

const ModelClass = mongoose.model('user', userSchema);

module.exports = ModelClass;

Upvotes: 0

Views: 41

Answers (1)

Raj Kumar
Raj Kumar

Reputation: 793

Why not use mongoose in your index.js ?

var mongoose = require('mongoose');
mongoose.Promise = global.Promise;
mongoose.connect('mongodb://localhost:27017/auth', { useNewUrlParser: true });

let db = mongoose.connection;
db.once('open', function callback () {
  console.log("connected to db");
});

Upvotes: 1

Related Questions