Node.js TypeForm:保存与现有实体的关系时复制键

Node.js TypeForm:保存与现有实体的关系时复制键,node.js,typescript,typeorm,Node.js,Typescript,Typeorm,我有以下类型的实体: @实体(“类别”) 出口类别{ @列({length:80}) 公共名称:字符串; @奥内托内( ():ObjectType=>Category, (category:category):category=>category.parent, { 级联:[“插入”,“更新”], } ) @JoinColumn({name:'parent',referencedColumnName:'id'}) 公共家长:类别; } 接下来,我在数据库中保存一些类别: 让parentCate

我有以下类型的实体:

@实体(“类别”)
出口类别{
@列({length:80})
公共名称:字符串;
@奥内托内(
():ObjectType=>Category,
(category:category):category=>category.parent,
{
级联:[“插入”,“更新”],
}
)
@JoinColumn({name:'parent',referencedColumnName:'id'})
公共家长:类别;
}
接下来,我在数据库中保存一些类别:

让parentCategory=new Category();
parentCategory.name='父类别';
让childCategory=新类别();
childCategory.name='Child Category';
childCategory.parent=parentCategory;
connection.manager.save(childCategory);
最后,我想添加一个新的“父类别”子类别(考虑父类别是从数据库加载的,并且包含其ID):

让newChildCategory=newcategory();
newChildCategory.name='newChildCategory';
newChildCategory.parent=childCategory.parent// 你能试试吗

@ManyToOne(
类型=>类别,
category=>category.children,
{
级联:[“插入”,“更新”],
}
)
公共家长:类别;
@独身癖(
类型=>类别,
category=>category.parent,
{
级联:[“插入”,“更新”],
}
)
公共儿童:第[]类;
?

我不确定这是您问题的根本原因,但
家长的类型应该是
类别
,而不是
类别
。顺便说一句,你没有警告你,真奇怪


不过,请注意,因为您将类别父关系定义为
onetone
类型,但从您提供的示例来看,您将其用作
OneToMany
/
多通
关系

这个解决方案还没有解决我的问题。“分类”是一个我忘了在这里纠正的错误。我将在我的问题中解决它。我试图通过只指向家长来避免“多”部分。我创建了一个GitHub repos来复制这个问题。我把它粘贴在我的问题中以便于调查。通过说
category=>category.parent
你是说关系的反面建立在相关实例的
parent
属性上,而这不是真的,因为如果
y
x
的父项,
x
不能同时清楚地成为
y
的父对象。无论如何,我看不出“避免‘多’部分”背后的逻辑。通过像您那样定义关系,一个类别可以有一个父类别,并且只能是一个类别的父类别?你确定吗?我完全忽略了我的主要答案,顺便说一句,我的坏。你应该为反边定义另一个域,我想我明白你的意思了。然而,即使我使用OneToMany,我仍然有关于重复钥匙的相同问题。我向我的GitHub repos发送了一个强制更新。如果你有时间,我创建了这个聊天室来讨论:我更新了我的原始答案,以更好地反映你应该尝试的更改。顺便说一句,我进了房间。你发现这个问题了吗@索洛托莱多?不使用重复密钥?