TypeOrm是否在插入时自动分配外键?

时间:2018-11-13 14:41:56

标签: typeorm

我很好奇我做错了什么。我有用OneToMany关系定义的实体。他们是:

Category
CategoryItem

其中Category为顶层,CategoryItem之间为OneToMany关系。

创建新记录时,我会这样做:

const newCategory: Category = new Category();
newCategory.name = 'Bob'
newCategory.items = [];

const newItem: CategoryItem = new CategoryItem();
newItem.someField = 'whatever';

newCategory.items.push(newItem);

现在,当我去保存这些项目时,只要我这样做:

(注意:以下代码中的实体是getManager()调用结果)

await entities.save(category)

然后保存类别,但不保存categoryItems。 (不是吗?)

如果我愿意

await entities.save(category);
for(const item of category.items) {
   await entities.save(item);
}

然后我收到一条错误消息,提示无法将null插入CategoryItem记录的categoryId字段中。为了正确保存,我发现我必须这样做:

await entities.save(category);
for(const item of category.items) {
    item.categoryId = category.categoryId;
   await entities.save(item);
}

只有这样才能保存。

这不是我期望的。我希望子项将被保存,并自动匹配其外键字段。

我对这个期望错了吗?如果没有,对我可能做错的事情有什么想法?

0 个答案:

没有答案