【问题标题】:Why am I getting an Invalid shorthand property initializer error on my node JS app?为什么我的节点 JS 应用程序出现 Invalid shorthand property initializer 错误?
【发布时间】:2020-12-01 20:17:46
【问题描述】:

您好,社区您能帮帮我吗?我正在尝试使用对象名称用户将其属性定义为模式,通过 mongoose 连接到 mongo db。

我有 3 个文件,这是我的项目结构

user.js(用户模型)

//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(用户控制器)

/*
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;

还有主文件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 );
})

还有 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"
  }
}

但我不知道为什么会出现此错误

【问题讨论】:

  • 请确保构造一个minimal reproducible example。请注意,所有这三个词都很重要:它应该只是一个示例,您不应该发布整个实际代码,而应该创建一个简化的示例来演示您的问题。此外,它应该是minimal,即它不应该包含证明问题所必需的任何内容。 (大多数初学者问题可以用不到 5 行简单的代码来演示。)而且它应该是reproducible,这意味着如果我复制并粘贴并运行代码,我应该会看到与您完全相同的问题见。

标签: javascript node.js express mongoose nodemon


【解决方案1】:

改变

let usuario = new User({
    name = body.name,
    email = body.email,
    password = body.password,
    role = body.role
})

let usuario = new User({
    name : body.name,
    email : body.email,
    password : body.password,
    role : body.role
})

您正在分配值而不是将 json 数据传递给用户模型

【讨论】:

    【解决方案2】:

    你不能用=给属性赋值,你需要使用:

    但是这里有一种更简洁的方法:

    let { name, email, password, role } = req.body;
    
    let usuario = new User({
        name,
        email,
        password,
        role
    })
    

    【讨论】:

      猜你喜欢
      • 2021-01-02
      • 1970-01-01
      • 2021-12-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-08
      • 2021-11-08
      • 1970-01-01
      相关资源
      最近更新 更多