CreateConnection and getConnectionOptions are deprecated as the typeorm version becomes 0.3.20.
I know i have to use DataSource instead, but I can't modify it even if I look at the official document because i'm completely newbie.
I do npm start after docker-compose up, it connects to Postgres, but I don't see the 'Memo' table.
/decorators/db.ts
import fp from "fastify-plugin";
import { createConnection, getConnectionOptions } from "typeorm";
import { Memo } from "../modules/memo/entity";
export default fp(async (fastify) => {
try {
const connectionOptions = await getConnectionOptions();
const connection = await createConnection(connectionOptions);
fastify.decorate("db", {
memo: connection.getRepository(Memo),
});
} catch (error) {
console.log(error);
}
});
index.ts
import fastify, {
FastifyRequest,
FastifyReply,
FastifyInstance,
} from "fastify";
import { Server, IncomingMessage, ServerResponse } from "http";
import db from "./decorators/db";
const PORT = process.env.PORT || "3000";
const server: FastifyInstance<Server, IncomingMessage, ServerResponse> =
fastify({ logger: true });
// test code
server.get("/", async (request: FastifyRequest, reply: FastifyReply) => {
return { hello: "world" };
});
server.register(db);
server.listen(+PORT, "0.0.0.0", (err) => {
if (err) throw err;
});
.env
TYPEORM_CONNECTION=postgres
TYPEORM_PORT=5432
TYPEORM_HOST=localhost
TYPEORM_USERNAME=admin
TYPEORM_PASSWORD=password123!
TYPEORM_DATABASE=test
TYPEORM_SYNCHRONIZE=true
TYPEORM_ENTITIES=src/modules/*/entity.ts
modules/memo/entity.ts
import {
CreateDateColumn,
Column,
Entity,
PrimaryGeneratedColumn,
UpdateDateColumn,
} from "typeorm";
@Entity()
export class Memo {
@PrimaryGeneratedColumn()
id: number;
@Column({ type: "varchar", length: 20, nullable: false })
title: string;
@Column({ type: "varchar", length: 1000, nullable: false })
content: string;
@CreateDateColumn()
created_at: Date;
@UpdateDateColumn()
updated_at: Date;
}
I am trying to change it like the code below.
import fp from "fastify-plugin";
import { DataSource, DataSourceOptions } from "typeorm";
import { Memo } from "../modules/memo/entity";
export default fp(async (fastify) => {
try {
//maybe these codes..?
const myDataSource = new DataSource({
//...
});
fastify.decorate("db", {
memo: myDataSource.getRepository(Memo),
});
} catch (error) {
console.log(error);
}
});