TypeORM(nestjs):使用createQueryBuilder按日期删除SQLite文档吗?

时间:2019-05-05 08:36:57

标签: sqlite nestjs typeorm

如果“过期”列小于当前日期,我一直试图在sqlite中删除记录。经过一些破解后,我能够使用存储库中的“删除”方法来完成此操作-这些破解是因为从我的阅读中可以看出,sqlite是如何工作的。这种方法的问题是我没有删除项目的列表,也没有删除项目的总数。我将在下面放置我当前的解决方案。

import { format } from "date-fns"

export const LessThanDate = (date: Date) => LessThan(format(date, "YYYY-MM-DD HH:MM:SS"))

const deletedResults = await this.accessTokenRepository.delete({
  expires: LessThanDate(new Date())
})

以上内容确实删除了记录,但是我不知道它删除了什么以及有多少记录。

我真正想做的是使用“ createQueryBuilder”,我创建了一个简单的查询-选择,甚至没有删除,我的理解是,当选择生效时,我可以看到返回的记录数,然后它应该只是将select替换为delete-对吗?

const numToDelete = await this.accessTokenRepository
  .createQueryBuilder()
  .where("expires < :date", { date: new Date() })
  .select()
  .execute()

问题是他在上面的查询中返回0条记录。我认为它与我执行第一个查询的方式类似,而sqlite需要功能“ LessThan”,但我无法使其正常工作。

任何人都可以帮忙吗?

基本上,我每隔X个小时运行一次计划的作业,并删除所有分类为过期的记录。

我一直在调试查询,如果我使用了留给我的where子句

const numToDelete = await this.accessTokenRepository
  .createQueryBuilder()
  .select()
  .execute()

果然,我得到了记录。我通过在type-orm.json文件中使用logging:true打开了对typeorm的日志记录,我看到了

query: SELECT "AccessTokenEntity"."jti" AS "AccessTokenEntity_jti", "AccessTokenEntity"."createdDate" AS "AccessTokenEntity_createdDate", "AccessTokenEntity"."expires" AS "AccessTokenEntity_expires", "AccessTokenEntity"."platformToken" AS "AccessTokenEntity_platformToken" FROM "access_token_entity" "AccessTokenEntity"

现在,再次启用where子句

query: SELECT "AccessTokenEntity"."jti" AS "AccessTokenEntity_jti", "AccessTokenEntity"."createdDate" AS "AccessTokenEntity_createdDate", "AccessTokenEntity"."expires" AS "AccessTokenEntity_expires", "AccessTokenEntity"."platformToken" AS "AccessTokenEntity_platformToken" FROM "access_token_entity" "AccessTokenEntity" WHERE expires < ? -- PARAMETERS: ["2019-05-05T06:31:46.672Z"]

不返回任何记录。我接受了上面的查询,并将其直接用作SQLite IDE中的查询(我使用vs代码打开sqlite文件)并直接执行。这是我在vs代码中针对SQLite使用的查询,并确保返回了足够的记录。

SELECT "AccessTokenEntity"."jti" AS "AccessTokenEntity_jti", "AccessTokenEntity"."createdDate" AS "AccessTokenEntity_createdDate", "AccessTokenEntity"."expires" AS "AccessTokenEntity_expires", "AccessTokenEntity"."platformToken" AS "AccessTokenEntity_platformToken" 
FROM "access_token_entity" "AccessTokenEntity" WHERE expires < "2019-05-05T06:31:46.672Z"

我对下一步感到困惑:-(,有什么想法我做错了吗?

预先感谢

0 个答案:

没有答案