我是TypeORM的新手,在更新实体时遇到问题。
我有一个要用于初始化数据库的静态类别列表。 我有一个食谱表,每个食谱可以有多个类别,但是只有“有效”类别(无法添加新类别)
这是我到目前为止尝试过的:
收件人实体:
@Entity()
export class Recipe {
@PrimaryGeneratedColumn("uuid")
id: string;
@Column()
title: string;
@ManyToMany(type => Category, {eager: true, cascade: ["update"]})
@JoinTable()
categories: Category[];
}
类别实体:
@Entity()
class Category {
@PrimaryGeneratedColumn()
public id: string;
@Column()
public name: string;
}
收件人控制器:
static async update(request: Request, response: Response, next: NextFunction) {
try {
const recipe = await getRepository(Recipe).findOne(request.params.id);
if (!recipe) {
return response.status(404).json({message: 'The specified recipe could not be found.'});
}
/**
* update categories
*/
if (request.body.categories) {
await getRepository(Recipe)
.createQueryBuilder()
.relation(Recipe, 'categories')
.of(recipe)
.addAndRemove(request.body.categories, recipe.categories);
delete request.body.categories;
}
await getRepository(Recipe).merge(recipe, request.body);
await getRepository(Recipe).save(recipe);
const updatedRecipe = await getRepository(Recipe).findOne(request.params.id);
response.json(updatedRecipe);
} catch (e) {
next(e);
}
}
我尝试了很多事情,但无法使它正常工作...
最终的办法是传入PUT /api/recipe/:id
的{{1}}配方方案,并使用相关类别更新配方。