猿问

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

我将 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

});

这是我的 server.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;

谢谢你!


隔江千里
浏览 167回答 3
3回答

料青山看我应如是

我想你忘了要求你Sequelize上面提到的文件中显示的`const {Sequelize, DataTypes, Model } = require('sequelize');如果你希望它的表由你可以sequelize.sync在你的项目中使用的模型自动创建await sequelize.sync({ force: true }); console.log("All models were synchronized successfully.");

肥皂起泡泡

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

阿波罗的战车

我设法通过将模型导入我的 server.js: const models = require("./src/models/index");并使用 sync() 方法来创建表。
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答