I created two tables. One is a user and the other is a friend table that has relationships between users.
The friend table was created to resolve the many-to-many relationship between users.
How can I create a typeorm entity and retrieve data in the form below?
{
"id": "1000014",
"name": "fu",
"address": aasd,
"createdTime": "2023-03-09T01:00:00.000Z",
"updatedTime": "2023-03-09T09:11:18.243Z",
"friends": [
{
"id": "5",
"name": "kaka",
"address": asdf,
"createdTime": "2023-03-09T01:00:00.000Z",
"updatedTime": "2023-03-09T09:11:18.243Z"
},
{
"id": "6",
"name": "lod",
"address": asdf,
"createdTime": "2023-03-09T01:00:00.000Z",
"updatedTime": "2023-03-09T09:11:18.243Z"
},
{
"id": "7",
"name": "asdf",
"address": asdf,
"createdTime": "2023-03-09T01:00:00.000Z",
"updatedTime": "2023-03-09T09:11:18.243Z"
},
{
"id": "8",
"name": "qwer",
"address": asdf,
"createdTime": "2023-03-09T01:00:00.000Z",
"updatedTime": "2023-03-09T09:11:18.243Z"
},
{
"id": "9",
"name": "qwer",
"address": dasfsdf,
"createdTime": "2023-03-09T01:00:00.000Z",
"updatedTime": "2023-03-09T09:11:18.243Z"
}
]
},
{
"id": "1000120",
"name": "asdvv",
"address": asdf,
"createdTime": "2023-03-08T15:00:00.000Z",
"updatedTime": "2023-03-09T09:11:18.243Z",
"friends": [
{
Assuming you have already created the necessary tables in your database, you can create two entities in TypeORM for the User and Friend tables.
User Entity:
import { Entity, PrimaryGeneratedColumn, Column, ManyToMany, JoinTable } from 'typeorm';
import { Friend } from './friend.entity';
@Entity()
export class User {
@PrimaryGeneratedColumn()
id: number;
@Column()
name: string;
@Column()
address: string;
@Column()
createdTime: Date;
@Column()
updatedTime: Date;
@ManyToMany(() => Friend)
@JoinTable({
name: 'user_friend',
joinColumn: { name: 'user_id', referencedColumnName: 'id' },
inverseJoinColumn: { name: 'friend_id', referencedColumnName: 'id' },
})
friends: Friend[];
}
Friend Entity:
import { Entity, PrimaryGeneratedColumn, Column } from 'typeorm';
@Entity()
export class Friend {
@PrimaryGeneratedColumn()
id: number;
@Column()
name: string;
@Column()
address: string;
@Column()
createdTime: Date;
@Column()
updatedTime: Date;
}
After creating the entities, you can use TypeORM to retrieve the data in the required format using a query like this:
import { getRepository } from 'typeorm';
import { User } from './entities/user.entity';
async function getUsersWithFriends(): Promise<User[]> {
const userRepository = getRepository(User);
const users = await userRepository.find({ relations: ['friends'] });
return users;
}