均衡 ORM。 sequalize.sync() 成功,但在 pg admin 4 中未创建表,在 Express Typescript 中

问题描述 投票:0回答:1

我尝试使用 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 没有给我很好的答案。

node.js typescript postgresql express sequelize.js
1个回答
0
投票

在这里您必须初始化所有模型。如何设置 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}`);
  });
© www.soinside.com 2019 - 2024. All rights reserved.