在前面的项目里面添加两个模块
npx typeorm entity:create src/entity/Article
npx typeorm entity:create src/entity/Tag
执行成功后你会发现在项目里面多了两个文件夹
创建多对多的关系使用
@JoinTable()
@ManyToMany(() => Tag)
向artice和tag里面添加内容
import { Column, Entity, JoinTable, ManyToMany, PrimaryGeneratedColumn } from "typeorm";
import { Tag } from "./Tag";
@Entity()
export class Article {
@PrimaryGeneratedColumn()
id: number;
@Column({
length: 100,
comment: '文章标题'
})
title: string;
@Column({
type: 'text',
comment: '文章内容'
})
content: string;
@JoinTable()
@ManyToMany(() => Tag)
tags: Tag[];
}
import { Column, Entity, PrimaryGeneratedColumn } from "typeorm"
@Entity()
export class Tag {
@PrimaryGeneratedColumn()
id: number;
@Column({
length: 100
})
name: string;
}
加入dataSource
修改index.tsx
import { AppDataSource } from "./data-source";
import { Article } from "./entity/Article";
import { Tag } from "./entity/Tag";
AppDataSource.initialize().then(async () => {
const a1 = new Article();
a1.title = '演讲的本质';
a1.content = '让思想更有影响力,抛弃演讲的套路,学会掌握自如,打动被人的影响力艺术';
const a2 = new Article();
a2.title = '山海经';
a2.content = '这是一本富有科幻魅力的书,在书里记录了很多孩子们喜欢的小故事';
const t1 = new Tag();
t1.name = '已读';
const t2 = new Tag();
t2.name = '未读';
const t3 = new Tag();
t3.name = '已订阅';
a1.tags = [t1, t2];
a2.tags = [t1, t2, t3];
const entityManager = AppDataSource.manager;
await entityManager.save(t1);
await entityManager.save(t2);
await entityManager.save(t3);
await entityManager.save(a1);
await entityManager.save(a2);
}).catch(error => console.log(error))
执行npm run start
搜索用relations指定你要关联的数据表
const article = await entityManager.find(Article, {
relations: {
tags: true
}
});
console.log(article);
console.log(article.map(item=> item.tags))
删除关联数据,先搜索到,然后进行筛选,最后保存即可。删除id为6的数据
const article = await entityManager.findOne(Article, {
where: {
id: 6
},
relations: {
tags: true
}
});
article.title = "ccccc";
article.tags = article.tags.filter(item => item.name.includes('ttt111'));
await entityManager.save(article);
执行npm run start
当然你也可以直接删除,我删除article里面id=1的数据
await entityManager.delete(Article, 1);
执行前长这样
执行后