javascript 无法在Sequelize中使用类模型在数据库中创建表

vm0i2vca  于 2023-02-02  发布在  Java
关注(0)|答案(3)|浏览(168)

我使用node.js和express和sequelize,我的数据库是mysql。我尝试创建一个类模型,如文档中所写:https://sequelize.org/master/manual/model-basics.html。我可以连接到数据库,但不知道如何同步模型与数据库,以创建表。以下是我的用户模型:

const { DataTypes, Model } = require('sequelize');
const connection = require("../server");

export class User extends Model { }

User.init({
    id: {
        type: DataTypes.BIGINT,
        autoIncrement: true,
        primaryKey: true,
        unique: true,
        allowNull: false
    },
    username: {
        type: DataTypes.STRING,
        allowNull: false,
        unique: true,
    },
    password: {
        type: DataTypes.STRING,
        allowNull: false,
    },
    userType: {
        type: DataTypes.STRING,
        allowNull: false,
    }
}, {
    connection
});

这是我的服务器js:

const express = require("express");
const Sequelize = require("sequelize");

const app = express();
const port = 8080;

const connection = new Sequelize("coupons2", "root", "1234", {
    host: "localhost",
    dialect: "mysql"
})

connection.sync()
    .then(() => {
        console.log("Connection to DB was successful");
    })
    .catch(err => {
        console.error("Unable to connect to DB", err);
    });

app.listen(port, () => {
    console.log(`Server is running on port ${port}`);
})

module.exports = connection;

谢谢大家!

brccelvz

brccelvz1#

我认为您忘记了需要上述文档中所示的Sequelize

`const {Sequelize, DataTypes, Model } = require('sequelize');

如果你想让it表由模型自动创建,你可以在项目中使用sequelize.sync

await sequelize.sync({ force: true });
console.log("All models were synchronized successfully.");
fafcakar

fafcakar2#

  • User.sync()-如果表不存在则创建表(如果表已经存在则不执行任何操作)
  • User.sync({ force: true })-创建表,如果表已存在,则先将其删除
  • User.sync({ alter: true })-检查数据库中表的当前状态(它有哪些列,它们的数据类型是什么,等等),然后在表中执行必要的更改以使它与模型匹配。
(async () => {
    await sequelize.sync({ alter: true });
})();
kqlmhetl

kqlmhetl3#

我设法通过将模型导入到我的server.js来创建表:const models = require("./src/models/index");,并使用sync()方法。

相关问题