typescript - 如何使用 TypeORM 创建的外键在 Postgres 中创建 JOIN
问题描述
一些快速的上下文,我来自 MySQL,我创建了一个类似于 .NET 的 Dapper 包的自定义 ORM。很长一段时间以来,我一直在使用我的自定义 ORM 和 MySQL,但它没有记录在案,因此很难雇佣开发人员并期望他们高效。
我决定尝试迁移到 Postgres(这样我将来可以使用 Hasura),我现在正在使用 TypeORM。我使用 TypeORM 实体创建了表。现在,我无法使用在 MySQL 中运行良好的 JOIN 进行简单查询。
这是一个例子:
用户表
- 身份证 (pk)
- 名
- 姓
地址表
- 身份证 (pk)
- 地址
- 城市
- 状态
- 压缩
- 用户 ID (fk)
询问
SELECT
user.id,
user.first_name,
user.last_name,
address.address,
address.city
FROM
debtor
INNER JOIN address
ON user.id = address.userId;
错误
ERROR: column address.userid does not exist
LINE 12: ON user.id = address.userId;
^
HINT: Perhaps you meant to reference the column "address.userId".
SQL state: 42703
Character: 300
我尝试了一堆不同的 JOIN 类型,我尝试了别名,我尝试了替代格式。
笔记
- TypeORM 创建了
address.userId
匹配的外键列user.id
- 错误是将列名转换为全部小写
column address.userid does not exist
这是 TypeORM 实体
// User.ts
...
@OneToMany(() => Address, (address: Address) => address.user, {
nullable: true,
cascade: true,
eager: true,
})
addresses: Address[];
// Address.ts
...
@ManyToOne(() => User, (user: User) => user.addresses)
@JoinColumn()
user: User;
解决方案
推荐阅读
- python - Django Can't Resolve Style ine fil static
- c# - 新关键字的 C# 继承问题
- amazon-web-services - 我在创建 AWS AppSync Authenticated DataSource 时遇到错误
- python-3.x - 如何在包含空列表的数据框中删除行?
- r - 如何将部分匹配的 ID 子集化到数据框中
- python - 如何在python中修复“IndexError:元组索引超出范围”?
- sql - 如何在 LIKE 中使用 SQL 函数 CONCAT
- c# - 与异常相比,结果对象是处理失败的更简洁的方法吗?
- hadoop - Hive 加载数据:没有文件匹配路径文件:/home/hive/sample.log
- c# - Input.mousePosition 具有 4-5 位小数精度?