【发布时间】:2022-01-03 10:17:37
【问题描述】:
对于一项任务,我正在尝试使用 docker compose 在容器中开发一个简单的 API。就像现在一样,一切正常,除了 typeORM 不会从实体自动生成表。
这是我的docker-compose.yml
version: "3.8"
services:
DOPS-mysql:
image: mysql/mysql-server
environment:
name: DOPS-mysql
MYSQL_DATABASE: 'DOPSDB'
MYSQL_USER: 'user'
MYSQL_PASSWORD: 'password'
volumes:
- ./mysqldata:/var/lib/mysql
ports:
- '3360:3360'
web:
build: ./server
depends_on:
- DOPS-mysql
ports:
- '4000:4000'
Dockerfile 它基于 Web 服务构建
FROM node
WORKDIR /server
COPY package.json ./
RUN npm install
COPY . .
RUN yarn build
EXPOSE 4000
CMD yarn docker
这是我的CreateConnection 函数
createConnection({
type: "mysql",
host: "DOPS-mysql",
port: 3360,
database: "DOPSDB",
username: "user",
password: "password",
logging:false,
synchronize:true,
entities:[Food]
})
还有我的实体:
import { Field, Int, ObjectType } from "type-graphql";
import { BaseEntity, Column, CreateDateColumn, Entity, PrimaryGeneratedColumn, UpdateDateColumn } from "typeorm";
@ObjectType()
@Entity()
export class Food extends BaseEntity {
@Field(() => Int)
@PrimaryGeneratedColumn()
id!:number;
@Field()
@Column()
name:string;
@Field()
@Column()
taste:string;
@Field()
@Column()
type:string;
@Field()
@Column({nullable:true})
objectivity?:boolean;
@Field()
@CreateDateColumn()
createdAt: Date;
@Field()
@UpdateDateColumn()
updatedAt: Date;
}
据我了解,一旦创建了数据库并建立了连接,typeORM 应该会根据实体自动生成表,但在这种情况下不会。我错过了什么?
提前感谢您的帮助。
编辑: 这是当我尝试访问 Foods 表时 appolographql 沙箱中显示的错误消息:
message": "No repository for \"Food\" was found. Looks like this entity is not registered in current \"default\" connection?"
【问题讨论】:
标签: mysql typescript docker docker-compose typeorm