繁体   English   中英

Sequelize synch 不在数据库中创建表

[英]Sequelize synch doesn't create table in db

我有像这样的项目结构

├── index.ts
├── package.json
├── package-lock.json
├── src
│   ├── controllers
│   ├── models
│   │   └── repository.ts
│   ├── routes
│   │   └── repository.ts
│   └── services
│       ├── minio.ts
│       └── sequelize.ts
└── tsconfig.json
// services/sequelize.ts
import { Sequelize } from 'sequelize'

const sequelizeConnection = new Sequelize("randomDb", "randomUser", "randomPassword", {
    host: "randomHost",
    dialect: "mysql"
})

export default sequelizeConnection
// models/user.ts
import { DataTypes } from 'sequelize'
import sequelizeConnection from '../services/sequelize'

const User = sequelizeConnection.define("user", {
    name: {
        type: DataTypes.STRING(30),
        allowNull: false
    }
})

export default User
// index.ts
import express from 'express'
import sequelize from './src/services/sequelize'

const app = express()

const startApp =  async()=> {
    try {
        await sequelize.sync()

        app.listen(3000, () => {
            console.log(`Listen on port 3000`)
        })
    } catch (error) {
        console.log("Synchronization error")
    }
}
startApp()

当我启动应用程序时,“sequelize.sync()”应该创建表“users”,但由于某些原因它没有。 我尝试在“用户”上单独调用sync()方法并且它有效,因此与db的连接没有问题。

await User.sync()

但就我而言,我有更多模型,我不想在每个模型上调用同步方法。

我相信这里的问题只是你的文件夹结构。 模型目录应与 index.ts 处于同一级别。

.sync() 方法的文档不是很好,可能是因为迁移是生产应用程序的首选方法( 参考)。 可能有一个配置属性,您可以在某处设置以维护您当前的结构,尽管我挖了一点,找不到任何东西。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM