I am trying to create a new document using mongoose inside my POST Route handler. I am using express.Router to define my routes.
index.js
<code>const express = require('express')
const app = express()
const userRouter = require('./routes/user.js')
const mongoose = require('mongoose')
mongoose.connect('mongodb://127.0.0.1:27017/Users')
const userSchema = new mongoose.Schema({
first_name: {
type: String,
required: true
},
last_name: {
type: String,
required: true
},
email: {
type: String,
required: true
},
gender: String
})
const User = new mongoose.model('user', userSchema)
app.use(express.urlencoded({ extended: false }))
app.use(express.json())
app.use('/user', userRouter)
app.listen(3000, () => console.log('Server Started!'))
module.exports = User;
</code>
<code>const express = require('express')
const app = express()
const userRouter = require('./routes/user.js')
const mongoose = require('mongoose')
mongoose.connect('mongodb://127.0.0.1:27017/Users')
const userSchema = new mongoose.Schema({
first_name: {
type: String,
required: true
},
last_name: {
type: String,
required: true
},
email: {
type: String,
required: true
},
gender: String
})
const User = new mongoose.model('user', userSchema)
app.use(express.urlencoded({ extended: false }))
app.use(express.json())
app.use('/user', userRouter)
app.listen(3000, () => console.log('Server Started!'))
module.exports = User;
</code>
const express = require('express')
const app = express()
const userRouter = require('./routes/user.js')
const mongoose = require('mongoose')
mongoose.connect('mongodb://127.0.0.1:27017/Users')
const userSchema = new mongoose.Schema({
first_name: {
type: String,
required: true
},
last_name: {
type: String,
required: true
},
email: {
type: String,
required: true
},
gender: String
})
const User = new mongoose.model('user', userSchema)
app.use(express.urlencoded({ extended: false }))
app.use(express.json())
app.use('/user', userRouter)
app.listen(3000, () => console.log('Server Started!'))
module.exports = User;
users.js
<code>const express = require('express')
const User = require('../index')
const router = express.Router()
router.post('/', async (req, res) => {
const newUser = await User.create({
first_name: "John",
last_name: 'Doe',
email: '[email protected]',
gender: 'Male'
})
res.send({ status: 'success', created: newUser })
})
module.exports = router;
</code>
<code>const express = require('express')
const User = require('../index')
const router = express.Router()
router.post('/', async (req, res) => {
const newUser = await User.create({
first_name: "John",
last_name: 'Doe',
email: '[email protected]',
gender: 'Male'
})
res.send({ status: 'success', created: newUser })
})
module.exports = router;
</code>
const express = require('express')
const User = require('../index')
const router = express.Router()
router.post('/', async (req, res) => {
const newUser = await User.create({
first_name: "John",
last_name: 'Doe',
email: '[email protected]',
gender: 'Male'
})
res.send({ status: 'success', created: newUser })
})
module.exports = router;
However, I am receiving the following warning-
Accessing non-existent property ‘create’ of module exports inside circular dependency
and the error-
User.create is not a function
I assume it is saying User
is undefined even though I have exported User
model from index.js
(apparently).
What is wrong with the code?