类型错误:无法读取未定义的 Sequelize 模型的属性“长度”

时间:2021-06-28 17:32:50

标签: javascript node.js model controller sequelize.js

我正在创建一个带有 sequelize 的 api,带有控制器模型迁移...,但是当我将 sucrase 用于导入/导出时,我的 api 损坏了,当我提出请求时,它向我发送了此错误“TypeError:无法读取属性” length' of undefined" ,我被困在这部分,我将在下面留下我的路线/控制器/模型

import express from 'express'
import UserController from './controllers/UserController.js'
const router = express.Router();

const userController = new UserController()

router.post("/users",userController.createUser)
router.post("/login", userController.login)

export default router;

这是我的控制器:

import User from '../models/User.js'
import crypto from 'crypto';
import  Op  from "sequelize";

class UserController {
  async createUser(req, res) {
    const { name, pw, message } = req.body;

    const password = crypto.createHash("md5").update(pw).digest("hex");

    try {
      const user = await User.create({ name, password, message });
      res.status(200).json({
        Response: "usuario criado com sucesso",
      });
    } catch (error) {
      console.log(error)
      res.status(401).json({
        Response: error,
      });
    }
  }

  async login(req, res) {
    const { name, pw } = req.body;
    const password = crypto.createHash("md5").update(pw).digest("hex");

    try {
      const results = await User.findAll({
        attributes: ["message"],
        where: {
          [Op.and]: [{ password: "password" }, { name: "name" }],
        },
      });
      console.log(results);
      res.status(200).json({
        Response: results,
      });
    } catch (error) {
      res.status(401).json({
        Response: "error",
      });
    }
  }
}
export default UserController;

这是我的模型:

import {DataTypes , Model} from 'sequelize';


class User extends Model {
  static init(sequelize) {
    super.init({
      name: DataTypes.STRING,
      password: DataTypes.STRING,
      message: DataTypes.TEXT
    }, {
      sequelize
    });
  }
}
export default User;

在使用 sucrase 之前,我的应用程序运行正常,但是我在导入 dotenv 时遇到了问题,所以我选择使用 sucrase 来帮助我进行导入/导出, 值得一提的是,我的迁移运行正常……只有当我要使用 User.create 做一个切口时才会弹出错误,我会将完整的错误消息放在下面,感谢您的关注。

TypeError: Cannot read property 'length' of undefined
    at User._initValues (/home/lagos/Documents/MySGBD/api/node_modules/sequelize/lib/model.js:140:49)
    at new Model (/home/lagos/Documents/MySGBD/api/node_modules/sequelize/lib/model.js:118:10)
    at new User (/home/lagos/Documents/MySGBD/api/src/models/User.js:4:1)
    at Function.build (/home/lagos/Documents/MySGBD/api/node_modules/sequelize/lib/model.js:2157:12)
    at Function.create (/home/lagos/Documents/MySGBD/api/node_modules/sequelize/lib/model.js:2207:23)
    at createUser (/home/lagos/Documents/MySGBD/api/src/controllers/UserController.js:12:43)
    at Layer.handle [as handle_request] (/home/lagos/Documents/MySGBD/api/node_modules/express/lib/router/layer.js:95:5)
    at next (/home/lagos/Documents/MySGBD/api/node_modules/express/lib/router/route.js:137:13)
    at Route.dispatch (/home/lagos/Documents/MySGBD/api/node_modules/express/lib/router/route.js:112:3)
    at Layer.handle [as handle_request] (/home/lagos/Documents/MySGBD/api/node_modules/express/lib/router/layer.js:95:5)

0 个答案:

没有答案