sequelize 不创建 table 显示此结果:"Executing (default): SELECT 1+1 AS result"

sequelize does not creating a table shows this result : "Executing (default): SELECT 1+1 AS result"

我尝试使用 sequelize 创建一个 table 它没有错误,但没有创建 table 结果显示此消息

Executing (default): SELECT 1+1 AS result

这是我的配置文件:

const Sequelize = require('sequelize');

const sequelize = new Sequelize('*******', '******', '*******', {
    dialect: 'mysql',
    host: 'localhost',
});

module.exports = sequelize;

这是我的 user.js 文件:

const Sequelize = require('sequelize');

const sequelize = require('../db/mysql/config');

const User = sequelize.define('user', {
    id: {
        type: Sequelize.INREGER,
        autoIncrement: true,
        allowNull: false,
        primaryKey: true
    },
    userName: {
        type: Sequelize.STRING,
        allowNull: false
    },
    email: {
        type: Sequelize.STRING,
        allowNull: false
    },
    password: {
        type: Sequelize.STRING,
        allowNull: false
    }

});


module.exports = User;

这是我的 test.js 文件,我 运行 它带有节点推荐:

const sequelize = require('./db/mysql/config')

sequelize
    .sync()
    .then(result => {
        console.log(result);
    })
    .catch(err => {
        console.log(err);
    })

如果我在配置文件中复制 user.js 代码,它工作正常

在 config.js 中导入您的 user.js 模型 一种 示例:-

     const User = require('enter your path here for user.js')

     User.sync();

将 user.js 文件导入 test.js 解决了我的问题。

您需要以某种方式执行模型以创建表。您可以通过在程序执行流程中要求您的模型文件来实现。

因为您没有导出您创建的表。

  • 在您的文件中您创建了 user.js,因此您必须导出它并确保您正在点击(同步)table,或者您可以同步特定的 table ,或者您可以一次同步所有 tables(models)。

如何同步特定的 table(型号)?

  • 在您的根文件(启动应用程序)中,导入 user.js

从 ('your path to the file')

导入 user.js
  • 现在写 modelName.sync();

如何一次点击(同步)所有 table?

  1. 创建所有模型后,必须将其导出
  2. 然后在你的根文件中,写入以下内容

sequelize.sync()

我的解决过程: => 在

之前检查数据库所有者
  1. 将所有模型文件保存在 /app/models
  2. 模型示例:
const {DataTypes, Model} = require('sequelize');

// on importe la connexion
const sequelize = require('./../database');

class User extends Model {
}

User.init({
        username: {
            type: DataTypes.STRING,
            allowNull: false
        },
        email: {
            type: DataTypes.STRING,
            allowNull: false,
            unique: true
        },
        password: {
            type: DataTypes.STRING,
            allowNull: false
        },
        roles: {
            type: DataTypes.JSON,
            defaultValue: {"roles":[{
                    "role_name":"ROLE_USER",
                }
            ]},
        },
        status: {
            type: DataTypes.BOOLEAN,
            defaultValue: false
        },
        birthday: {
            type: DataTypes.DATE,
            allowNull: false
        },
        filename: DataTypes.STRING,
        activation_token: DataTypes.STRING,

    },
    {
        underscored: true,
        sequelize, //connexion a l'instance
        timestamps: true,
        tableName: 'user'
    }
);

User.sync({ alter: true });
console.log("==> The table for the User model was just (re)created!");

module.exports = User;
  1. /app/database.js
  2. 中为数据库连接创建专用文件
const {Sequelize} = require('sequelize');

const sequelize = new Sequelize(process.env.PG_URL, {});

module.exports = sequelize;
  1. 创建内部目录/app/models新文件index.js
  2. 在此文件中添加所需的所有模型:
const User      = require('./user');
const Category  = require('./category');
    ...
module.exports = { User, Category };
  1. 在项目根目录上创建新文件,如:init_models_db.js
const models = require('./app/models'); //By default load index.js inside /app/models
const sequelize = require('./app/database');

const init_BDD = async () => {
    try {
        await sequelize.authenticate();
        console.log('Connection has been established successfully.');
        const created =  sequelize.sync({force: true});

        if(created) {
            console.log("==> TABLE DONE !");
        }

    } catch (error) {
        console.error('Unable to connect to the database:', error);
    }
} 
init_BDD();
  1. 执行命令:node init_models_db.js

一旦您导入模型并将其引入控制器,然后定义路由,最后将路由添加到 index.js 或应用程序的入口点,将创建 table自动,无需直接将模型要求到您的入口点文件中;

  • yourModel.js[导出模型]
  • yourController.js [此处需要您的型号]
  • yourRoutes.js[需要你的控制器]
  • index.js | app.js | main.js[需要你的路由器]