为啥我的节点 JS 应用程序出现 Invalid shorthand property initializer 错误?

Posted

技术标签:

【中文标题】为啥我的节点 JS 应用程序出现 Invalid shorthand property initializer 错误?【英文标题】: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,这意味着如果我复制并粘贴并运行代码,我应该会看到与您完全相同的问题见。 【参考方案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
)

【讨论】:

以上是关于为啥我的节点 JS 应用程序出现 Invalid shorthand property initializer 错误?的主要内容,如果未能解决你的问题,请参考以下文章

当我使用节点启动机器人时,为啥 discord.js 模块出现错误?

为啥 Application.Wait 会出现编译错误:“Invalid Qualifier”

为啥此查询中出现错误“ORA-00904: invalid identifier”?

使用 oAuth 和 youtube 进行身份验证时,总是出现错误:invalid_grant on 2nd auth attempt,为啥?

为啥手机上不了百度网、只显示英文gateway received an invalid response from the upstream gateway

为啥我的 SKSpriteNodes 不会出现在场景中?