我使用查询生成器,在我的请求中有几个连接(通过使用leftJoinAndMapMany
)。由于连接,我需要使用skip
和take
进行分页,因为使用offset
和limit
时,它的工作方式并不符合我的需要。所以,如果我使用offset
和limit
,请求工作正常,我没有任何异常。但是如果我使用skip
和take
,我有""User"" alias was not found. Maybe you forgot to join it?
(不知道为什么有两个引号,也许这是一个问题?)SQL查询调试显示正常查询,我可以在数据库中运行,它的工作。所以问题是在类型数据库方面.如果我删除连接,它与skip
和take
工作正常。
const dbQuery: SelectQueryBuilder<T> = userRepository.createQueryBuilder('User');
dbQuery.leftJoinAndMapMany(...);
dbQuery.skip(skip);
dbQuery.take(take);
字符串
UPD:我已经检查了typeorm
库,发现QueryExpressionMap.prototype.findAliasByName = function (aliasName)
函数,发现aliasName在这里带有引号,所以我添加了代码来删除这些引号,现在它可以工作了,但不确定它是否是一个好的解决方案:)
1条答案
按热度按时间ql3eal8s1#
问题是
orderBy
,在skip
和take
的情况下,你应该提供User.id
,而不是"User"."id"
(就像你使用limit/offset
的情况一样)