我尝试使用 Sequalize ORM 创建表“Food”,但是当我使用 sequalize.sync() 时,无法在 PG Admin 4 中创建表。如何解决此问题。 我在文档中看到但没有帮助我
配置.ts
import { Sequelize } from "sequelize";
const sequelize = new Sequelize({
database : 'seblak_super',
username : 'admin',
password : 'admin',
host : 'localhost',
port : 5432,
dialect : 'postgres'
})
export default sequelize
食品.ts
import { DataTypes, Model } from "sequelize";
import sequelize from "../../../configs/database";
class Food extends Model {
declare id: string;
declare name: string;
declare description: string;
declare price: string;
}
Food.init(
{
id: {
type: DataTypes.UUIDV4,
defaultValue: DataTypes.UUIDV4,
primaryKey: true,
unique: true,
},
name: {
type: DataTypes.STRING,
allowNull: false,
},
description: {
type: DataTypes.TEXT,
allowNull: false,
},
price: {
type: DataTypes.NUMBER,
allowNull: false,
},
},
{ modelName: "Food", sequelize: sequelize }
);
索引.ts
import express, { Request, Response } from "express";
import sequelize from "./src/configs/database";
const app = express();
const port = 3000;
sequelize
.authenticate()
.then(() => console.log("Connected"))
.catch((error) => console.log(error));
sequelize
.sync({ force: true })
.then(() => console.log("Create Model"))
.catch((error) => console.log(error));
app.get("/", (req: Request, res: Response) => {
res.send("Hello World!");
});
app.listen(port, () => {
console.log(`Server is listening at http://localhost:${port}`);
});
这是我终端中的结果。
如何解决这个问题?,Chatgpt 没有给我很好的答案。
在这里您必须初始化所有模型。如何设置 Sequelize 由您决定。对于一个基本示例,您可以像这样在配置文件中分配它:
配置.ts
import { Sequelize } from "sequelize";
import Food from "../models/Food";
const sequelize = new Sequelize({
database : 'seblak_super',
username : 'admin',
password : 'admin',
host : 'localhost',
port : 5432,
dialect : 'postgres'
});
// initialize all models
sequelize.models.Food = Food;
export default sequelize;
食品.ts
import { DataTypes, Model } from "sequelize";
import sequelize from "../../../configs/database";
class Food extends Model {
declare id: string;
declare name: string;
declare description: string;
declare price: string;
}
Food.init(
{
id: {
type: DataTypes.UUID,
defaultValue: DataTypes.UUIDV4,
primaryKey: true,
unique: true,
},
name: {
type: DataTypes.STRING,
allowNull: false,
},
description: {
type: DataTypes.TEXT,
allowNull: false,
},
price: {
type: DataTypes.DECIMAL,
allowNull: false,
},
},
{ modelName: "Food", sequelize: sequelize }
);
export default Food;
索引.ts
import express, { Request, Response } from "express";
import sequelize from "./src/configs/database";
const app = express();
const port = 3000;
sequelize
.authenticate()
.then(() => console.log("Connected"))
.catch((error) => console.log(error));
sequelize
.sync({ force: true })
.then(() => console.log("Create Model"))
.catch((error) => console.log(error));
app.get("/", (req: Request, res: Response) => {
res.send("Hello World!");
});
app.listen(port, () => {
console.log(`Server is listening at http://localhost:${port}`);
});