Reputation: 355
Hello SO comunity could you help me? I'm trying to connect through mongoose to a mongo db using using a object name user with its properties defined as a schema.
I have 3 files and this is my project structure
user.js (user model )
//mongoose is necesary
const mongoose = require('mongoose');
let Schema = mongoose.Schema;
let usersSchema = new Schema({
name: {
type: String,
required: [true, 'name is required']
},
email:{
type: String,
required: [true, 'email is required']
},
password:{
type: String,
required: [true, 'password is required']
},
img:{
type: String,
},
role:{
type: String,
default: 'USER_ROLE'
},
state:{
type: Boolean,
default: true
},
social:{
type: Boolean,
default: false
}
});
//exports
module.exports = mongoose.model('User', usersSchema);
user.js (user controller)
/*
Endpoind for the user data*/
const express = require('express');
const User = require('../models/user_model')
const app = express()
/*************
** GET **
*************/
app.get('/usuarios', function (req, res) {
res.json('Hello World')
})
/*************
** POST ****
*************/
app.post('/usuarios', function (req, res) {
let body = req.body
let usuario = new User({
name = body.name,
email = body.email,
password = body.password,
role = body.role
})
usuario.save((err, userDB) => {
// if error
if (err) {
return res.status(400).json({
ok: false,
err
})
}
// if success
res.json({
ok: true,
user: userDB
})
})
})
/*************
** PUT **
*************/
app.put('/usuarios/:id', function (req, res) {
let id = req.params.id
res.json({
id
})
})
/*************
** DELETE **
*************/
app.delete('/usuarios', function (req, res) {
res.json('Hello World')
})
/*
Exports
*/
module.exports = app;
And the main file server.js
// dependencies
require ('./config/config'); // inmediactly loaded
const mongoose = require('mongoose');
const express = require('express');
const bodyParser = require('body-parser');
const { json } = require('body-parser');
// declarations
const app = express()
// configuring body parser for express
// parse application/x-www-form-urlencoded
app.use(bodyParser.urlencoded({ extended: false }))
// parse application/json
app.use(bodyParser.json())
// temporal para pasar por referencia las rutas de usuarip
app.use(require('./controllers/user'))
// monguse settings conection
mongoose.connect('mongodb://localhost:27017/sales',{useNewUrlParser: true, useUnifiedTopology: true}, (err, resp)=>{
if (err) throw new err;
console.log('connected to mongodb')
}
);
app.listen(process.env.PORT, () => {
console.log('runing on port:',process.env.PORT );
})
and also package.json
{
"name": "node_repaso",
"version": "1.0.0",
"description": "a review poject",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"keywords": [
"review"
],
"author": "Gerardo Guevara",
"license": "ISC",
"dependencies": {
"body-parser": "^1.19.0",
"express": "^4.17.1",
"mongoose": "^5.9.28"
}
}
but I don't know why I get this error
Upvotes: 0
Views: 999
Reputation: 14914
You cannot assign values to properties with =
you need to use :
However here is a cleaner way to do it:
let { name, email, password, role } = req.body;
let usuario = new User({
name,
email,
password,
role
})
Upvotes: 1
Reputation: 488
Change
let usuario = new User({
name = body.name,
email = body.email,
password = body.password,
role = body.role
})
To
let usuario = new User({
name : body.name,
email : body.email,
password : body.password,
role : body.role
})
you are assigning value instead of passing json data to User Model
Upvotes: 2