I keep getting errors like User is not a function or user is not a constructor, I think it is a mongoose connection problem

Viewed 36

The data which I've passed through postman shows in console but errors shows up soon after. I tried this with v5 and v6 of mongoose. This one is with mongoose v5 installed. Tried the collections module inside this index.js and externally in a different file. Tried with es6 and es5 syntax relating to imports/exports. I've seen many questions similar to mine but the solutions didn't help because i assume they're from older versions.

update: This issue is cause by MongoDB connection issues probably, please refer my other question.

const express = require('express');
const cors = require('cors');
const mongoose = require('mongoose');
const app = express();
const User = require('./models/user.model')

app.use(cors());
app.use(express.json());

mongoose.connect('atlas url', {
    useNewUrlParser: true,
    useUnifiedTopology: true,
    useCreateIndex: true
});

mongoose.connection.once('open', () => {
    console.log("Connected to Database Successfully.");
});

app.post('/api/signup', async (req, res) => {
    console.log(req.body)
    try {
         await User.save({  
/* Also tried using create here, another time with new instance of User*/
            email: req.body.email,
            password: req.body.password,
            address: req.body.address,
        });
        res.json({status: 'ok'})
    } catch (err) {
        console.log(err)
        res.json({ status: 'error', error: 'Email already registered' })
        
    }
});

app.listen(1111, () => {
    console.log('server started at 1111')
})

This is the external model code.


const mongoose = require('mongoose');

const User = new mongoose.Schema({
    email: { type: String, required: true, unique: true },
    password: { type: String, required: true },
    address: { type: String, required: true },
},
    { collection: 'user-data' }
)

const model = mongoose.model('UserData', User)

module.exports = User

0 Answers
Related