Node.js 类型为don';不同步连接表

Node.js 类型为don';不同步连接表,node.js,typeorm,Node.js,Typeorm,我目前正在研究两个模式。一个由TypeForm创建和管理,另一个是xenforo实例。我只有xenforo模式的查询权限。每个用户都有保存在不同表上的订阅,该表需要与该用户联接。这是通过xenforo管理的联接表完成的,所以我只有对该联接表的读取权限。所以我布置了装饰品,一切都很好。但是,尽管实体被标记为非同步类型,但它尝试在xenforo模式中创建JoinTable,但由于缺少权限而失败。 这就是我的实体类的外观: @ObjectType() @实体({schema:'dev_xf',name

我目前正在研究两个模式。一个由TypeForm创建和管理,另一个是xenforo实例。我只有xenforo模式的查询权限。每个用户都有保存在不同表上的订阅,该表需要与该用户联接。这是通过xenforo管理的联接表完成的,所以我只有对该联接表的读取权限。所以我布置了装饰品,一切都很好。但是,尽管实体被标记为非同步类型,但它尝试在xenforo模式中创建JoinTable,但由于缺少权限而失败。 这就是我的实体类的外观:

@ObjectType()
@实体({schema:'dev_xf',name:'xf_user',synchronize:false})
导出类用户扩展BaseEntity{
@字段(类型=>Int)
@PrimaryGeneratedColumn({name:'user_id',unsigned:true})
id:编号;
@字段()
@第()列
用户名:字符串;
@列({name:'is_版主'})
isModerator:布尔型;
@列({name:'is_admin'})
isAdmin:布尔型;
@字段()
@列({name:'is_banked'})
isk:布尔;
@OneToOne(类型=>UserAuthentication)
@JoinColumn({name:'user_id'})
认证:用户认证;
@字段(类型=>[UserUpgrade])
@ManyToMany(类型=>UserUpgrade)
@可接合({
架构:“dev_xf”,
名称:“xf\u用户\u升级\u活动”,
joinColumn:{
名称:'user\u id'
},
反向连接列:{
名称:“用户\u升级\u id”
}
})
用户升级:承诺;
}
@ObjectType()
@实体({schema:'dev_xf',name:'xf_user_upgrade',synchronize:false})
导出类UserUpgrade扩展BaseEntity{
@字段(类型=>Int)
@PrimaryGeneratedColumn({name:'user_upgrade_id',unsigned:true})
id:编号;
@字段()
@第()列
标题:字符串;
}
尽管两个实体都被标记为非同步,但是TypeOrm试图创建JoinTable,是否有解决方法来解决这个问题

关于艺术

编辑: 好吧,我找不到得到这份工作的方法。似乎需要实现以下功能:

原始答复: 如果您使用的是两个模式,那么在ormconfig中应该有两个连接。当您将实体拆分为不同的文件夹(由数据库分隔)时,将仅对该文件夹中的实体执行迁移

例如: 您的文件夹结构应如下所示:

+-- src
    +-- entity
       +-- default
          +-- YourEntity.ts
       +-- external
          +-- User.ts
          +-- UserUpgrade.ts
您的ormconfig应该如下所示(不同的实体文件夹)

现在运行数据库连接的migartations时,只需运行

typeorm migration:run -c default

外部文件夹中的实体将不会被触摸。

我正在使用mariadb。但不确定数据库是否正确。因为整个设置工作时没有任何问题,所以它正确地将架构名称放在它试图访问的表的前面。我遇到的唯一问题是,它试图创建JoinTable,但失败了,因为它已经存在。所以理想情况下,我希望从自动同步中排除JoinTable。你是对的,这没有帮助。我刚刚在Github上发现了一个类似的问题,似乎synchronize对JoinTable和JointColumn不起作用:。感谢您的回答。我只是按照您所描述的方式设置了所有内容,我可以查询实体,没有任何问题,除了跨模式连接似乎被破坏<代码>节点:6016)未处理的PromisejectionWarning:错误:找不到应用程序#用户升级的实体元数据。检查您是否指定了正确的实体对象,以及它是否已在连接选项中连接。App是我的默认实体之一。为了确定一下,您(如果尚未指定)能否在实体装饰器中将“schema”替换为“database”?我确实记得我曾经因为把它们混在一起而遇到过一个问题。如果你已经发布了,你能发布你的ormconfig.json吗?好的,ormconfig看起来不错,你能从默认方案发布你的应用实体吗?“找不到*的实体元数据”错误几乎总是基于一些小的输入错误,如本期:。
typeorm migration:run -c default