Есть ли способ создать отношения между различными соединениями в сущности типа?

#database #typescript #backend #typeorm

Вопрос:

Я создаю 2 соединения, используя TypeORM, как показано ниже:

 await createConnections([
    {
      name: "conn1",
      type: "mssql",
      host: "localhost",
      port: parseInt(process.env.DB_PORT || "1433"),
      username: process.env.DB_USER,
      password: process.env.DB_PASS,
      database: process.env.DB_NAME,
      logging: true,
      entities: [__dirname   "/entities/example/*{.js,.ts}"],
      options: {
        enableArithAbort: true,
      },
    },
    {
      name: "conn2",
      type: "mssql",
      host: "localhost",
      port: parseInt(process.env.DB_PORT || "1433"),
      username: process.env.DB_USER,
      password: process.env.DB_PASS,
      database: process.env.DB_NAME1,
      logging: true,
      entities: [__dirname   "/entities/*{.js,.ts}"],
      options: {
        enableArithAbort: true,
      },
    },
  ]);
 

Моя сущность сотрудника находится в conn1, Сущность пользователя-в conn2. Затем я настраиваю OneToOne между сотрудником и пользователем, например:

 @ObjectType()
@Entity("Employees")
export class Employee extends BaseEntity {
  ...
  @Field(() => User, { nullable: true })
  @OneToOne(() => User, (user) => user.employee)
  @JoinColumn({ name: "EmployeeID", referencedColumnName: "id" })
  user: User | null = null;
}

@ObjectType()
@Entity({ name: "User" })
export class GMGUser extends BaseEntity {
...
  @Field(() => Employee)
  @OneToOne(() => Employee, (employee) => employee.user)
  @JoinColumn({ name: "id", referencedColumnName: "EmployeeID" })
  employee!: Employee;
}
 

Но я все равно получил ошибку: метаданные сущности для пользователя#сотрудник не были найдены или Сотрудник#пользователь не найден после проверки всех подключений; путь импорта и заклинания верны. Я пытаюсь настроить отношения в каждом из соединений, которые также работают. Но я не могу понять, как установить отношения между различными соединениями в TypeORM. Приветствуйте любые предложения или решения.

Комментарии:

1. работает ли.it., когда оба объекта находятся в одном и том же соединении?

2. Я попытался поместить все сущности в одно соединение, которое кажется нормальным, потому что ошибка не отображается. но я получил ноль благодаря отношениям с одним человеком. Все отношения работают в каждом соединении, но не работают между 2 соединениями. Я ищу способ создать связь между 2 различными соединениями.

3. Я бы предложил активировать журналы в обоих подключениях и отправить выполняемый запрос. Насколько я понимаю, я не использую «совместный столбец» при определении отношений. Кроме того, я не задаю путь к сущностям в определении соединения, а скорее создаю массив сущностей, который я отправил в createConnection.

4. Спасибо за ваши предложения. Причина, по которой я использую «JoinColumn», заключается в том, что я создаю отношения в исходящих таблицах, имена которых не соответствуют имени столбца typeorm по умолчанию. Используя JoinColumn, я могу указать имя столбца.