无法使用 Sequelize 中的 class 模型在数据库中创建 table
Can't create table in database using class model in Sequelize
我将 node.js 与 express 和 sequelize 一起使用,我的数据库是 mysql。
我尝试创建一个 class 模型,如文档中所写: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;
谢谢!
我想你忘记要求 Sequelize
如你上面提到的文件所示
`const {Sequelize, DataTypes, Model } = require('sequelize');
如果您希望它 table 由模型自动创建,您可以在您的项目中使用 sequelize.sync
await sequelize.sync({ force: true });
console.log("All models were synchronized successfully.");
我通过将模型导入我的 server.js 来创建表格:
const models = require("./src/models/index");
,并使用 sync() 方法。
User.sync()
- 如果 table 不存在(如果它已经存在则不执行任何操作)
User.sync({ force: true })
- 这将创建 table,如果它已经存在则先删除它
User.sync({ alter: true })
- 这会检查数据库中 table 的当前状态(它有哪些列,它们的数据类型是什么,等等),然后执行必要的更改table 使其与模型匹配。
(async () => {
await sequelize.sync({ alter: true });
})();
我将 node.js 与 express 和 sequelize 一起使用,我的数据库是 mysql。 我尝试创建一个 class 模型,如文档中所写: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;
谢谢!
我想你忘记要求 Sequelize
如你上面提到的文件所示
`const {Sequelize, DataTypes, Model } = require('sequelize');
如果您希望它 table 由模型自动创建,您可以在您的项目中使用 sequelize.sync
await sequelize.sync({ force: true });
console.log("All models were synchronized successfully.");
我通过将模型导入我的 server.js 来创建表格:
const models = require("./src/models/index");
,并使用 sync() 方法。
User.sync()
- 如果 table 不存在(如果它已经存在则不执行任何操作)User.sync({ force: true })
- 这将创建 table,如果它已经存在则先删除它User.sync({ alter: true })
- 这会检查数据库中 table 的当前状态(它有哪些列,它们的数据类型是什么,等等),然后执行必要的更改table 使其与模型匹配。
(async () => {
await sequelize.sync({ alter: true });
})();