【问题标题】:Getting error when trying to post to mysql “Cannot read property 'create' of undefined”尝试发布到 mysql 时出现错误“无法读取未定义的属性‘创建’”
【发布时间】:2021-01-29 10:10:50
【问题描述】:

我正在使用 node、sequelize、migration 和 mysql。我已经完成了 sequelize init 并在“模型”文件中定义了我的模型。我正在 server.js 文件中测试我的第一个端点,但是当我想运行帖子时,会出现此消息:

无法读取未定义的“创建”属性

我已经阅读了很多问题,并且假设通过下一个要求我可以访问我的模型。

Students.js(模型)

'use strict';
module.exports = (sequelize, DataTypes) => {

  const students = sequelize.define('students', {

    dep_id:{
      type:DataTypes.INTEGER,
      allowNull:false,
    },
    name:{
      type:DataTypes.STRING,
      allowNull:false,
    },
    surname:{
      type:DataTypes.STRING,
      allowNull:false,
    },
    number:{
      type:DataTypes.STRING,
      unique:true,
      allowNull:false,
    },
    phone:{
      type:DataTypes.STRING,
      unique:true,
      allowNull:false,
    },
    mail:{
      type:DataTypes.STRING,
      unique:true,
      allowNull:false,
    } ,
    password:{
      type:DataTypes.STRING,
      allowNull:false,
    },
    actives:{
      type:DataTypes.INTEGER,
      allowNull:false,
    },
    confirm_key:{
      type:DataTypes.STRING,
      allowNull:false,
    },
  
 }, {tableName:"students"
});


    students.associate =(models) =>{
      // define association here
    
  };

  return students;
};

AuthController.js(控制器)

const {Students} = require('../models/index');
const bcrypt = require('bcrypt');
const jwt = require('jsonwebtoken');
const authConfig= require('../../config/auth');
module.exports={
    signIn(req,res)
    {

    },
    signUp(req,res){
        Students.create(req.body);
    }

}

routes.js

const express = require('express');

const router = express.Router();

const AuthController=require('./controllers/AuthController');

router.get('/',(req,res)=>{
    res.json({ message:'hello'});
});

router.post('/api/signin',AuthController.signIn)
router.post('/api/signup',AuthController.signUp)


module.exports=router;

index.js(模型)

'use strict';
const fs = require('fs');
const path = require('path');
const Sequelize = require('sequelize');
const basename = path.basename(__filename);

const config = require('../../config/database');

const db = {};

let sequelize  = new Sequelize(config.database, config.username, config.password, config);


fs
  .readdirSync(__dirname)
  .filter(file => {
    return (file.indexOf('.') !== 0) && (file !== basename) && (file.slice(-3) === '.js');
  })
  .forEach(file => {
    const model = require(path.join(__dirname, file))(sequelize, Sequelize.DataTypes);
    db[model.name] = model;
  });

Object.keys(db).forEach(modelName => {
  if (db[modelName].associate) {
    db[modelName].associate(db);
  }
});

db.sequelize = sequelize;
db.Sequelize = Sequelize;

module.exports = db;

【问题讨论】:

    标签: node.js express sequelize.js


    【解决方案1】:

    解决了

    const model = require(path.join(__dirname, file))(sequelize, Sequelize.DataTypes);
    

    返回的是学生。问题在于型号名称错误

    【讨论】:

      猜你喜欢
      • 2019-08-21
      • 2020-08-04
      • 1970-01-01
      • 1970-01-01
      • 2023-03-23
      • 1970-01-01
      • 1970-01-01
      • 2017-09-28
      • 1970-01-01
      相关资源
      最近更新 更多