geraktOfRivia
geraktOfRivia

Reputation: 355

Why am I getting an Invalid shorthand property initializer error on my node JS app?

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 enter image description here

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

enter image description here

Upvotes: 0

Views: 999

Answers (2)

Ilijanovic
Ilijanovic

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

Rahul Pal
Rahul Pal

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

Related Questions