“* 未找到别名。也许您忘记加入它?”与跳过和采取并加入

问题描述 投票:0回答:1

我使用查询生成器,并且在我的请求中几乎没有连接(通过使用

leftJoinAndMapMany
)。由于连接,我需要使用
skip
take
进行分页,因为使用
offset
limit
它不能按我的需要工作。 所以,如果我使用
offset
limit
请求工作正常,我没有任何例外。但是如果我使用
skip
take
我有
""User"" alias was not found. Maybe you forgot to join it?
(不知道为什么有两个引号,也许这是一个问题?) sql 查询调试显示正常查询,我可以在数据库中运行它并且它可以工作。所以问题出在 typeorm 方面...如果我删除连接,它可以与
skip
take
一起使用。

const dbQuery: SelectQueryBuilder<T> = userRepository.createQueryBuilder('User');
dbQuery.leftJoinAndMapMany(...);
dbQuery.skip(skip);
dbQuery.take(take);

更新: 我检查了

typeorm
lib 并找到了
QueryExpressionMap.prototype.findAliasByName = function (aliasName)
函数,发现 aliasName 带有引号,所以我添加了代码来删除这些引号,现在它可以工作了,但不确定这是否是一个好的解决方案:)

node.js postgresql left-join typeorm
1个回答
0
投票

问题是

orderBy
,如果出现
skip
take
,您应该提供
User.id
而不是
"User"."id"
(就像您使用
limit/offset
时那样)

© www.soinside.com 2019 - 2024. All rights reserved.