【问题标题】:sequelize 不创建表显示此结果:“执行(默认):SELECT 1+1 AS 结果”
【发布时间】:2020-12-16 02:07:25
【问题描述】:

我尝试使用 sequelize 创建一个表,它运行良好,没有错误,但不是创建一个表,而是显示此消息

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 代码,它可以正常工作

【问题讨论】:

    标签: javascript mysql sequelize.js


    【解决方案1】:

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

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

    【讨论】:

    • 我试过它给出这个错误信息:TypeError: sequelize.define is not a function
    • 在你的 test.js 文件中替换 const sequelize 为 const Sequelize = require('sequelize');
    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

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

      • 在您的文件中您已经创建了 user.js,因此您必须将其导出并确保您正在点击(同步)该表,您可以同步特定表,或者您可以同步所有表(模型)一次。

      如何同步特定表(模型)?

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

      从('您的文件路径')导入 user.js

      • 现在写 modelName.sync();

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

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

      sequelize.sync()

      【讨论】:

        【解决方案4】:

        我的解决过程: => 之前检查数据库所有者

        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 中为数据库连接创建专用文件
        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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-12-19
          • 2014-06-23
          • 1970-01-01
          • 2017-02-17
          • 2021-04-12
          • 2013-05-12
          相关资源
          最近更新 更多