typescript Typeorm全局where子句

a64a0gku  于 2023-06-07  发布在  TypeScript
关注(0)|答案(1)|浏览(167)

在我的数据库中,所有的表都有一个布尔列“active”,用于知道查询是否应该返回该行。
当我们使用TypeORM作为我们的后端ORM时,是否有可能在TypeORM进行的每个查询上都有一个全局语句/子句,如:
WHERE column.active = true
因此,像这样,列活动的值为0的行,在主应用程序流期间不会返回TypeORM查询,而不是在每个queryBuilder或存储库中重写它,例如“find”或“findOrfail”,我们甚至不写任何东西。

  • 需要在TypeORM中,因为它应该在sgbd和类似的事情上手动查询时返回
  • 我们使用postgre作为SGBD
  • Typeorm v0.2.24
xqk2d5yq

xqk2d5yq1#

此库支持Active Record模式(与实体一起使用)和Data Mapper模式(与存储库一起使用)的作用域(对于2.x和3.x版本的typeorm)。我想这对你们大家都很有用。
enter link description here

import { DefaultScopes } from "typeorm-scoped"

@DefaultScopes<User>({
  existed: (qb, alias) => qb.andWhere(`${alias}.deletedAt IS NULL`),
  ...
})
@Entity()
export class User extends BaseEntity {
  // ...
}

// in Your service

User.find({where: {name: "John"}})
// or
userRepository.find({where: {name: "John"}})

// will produce an SQL query like
// SELECT "User"."id" AS "User_id", "User"."name" AS "User_name" 
// FROM "user" "User" 
// WHERE "User"."name" = ? AND "User"."deletedAt" IS NULL
// -- PARAMETERS: ["John"]

相关问题