如何在nest.js TypeORM中编写日期小于或等于某个值的where条件?

Vuk*_*Dju 0 typeorm nestjs

我正在使用 Nest.js 和 TypeORM。我需要进行一个查询,返回表中的所有行,其中facility_id 等于某个值,并且date 小于或等于(<=) 某个日期值。

我阅读了有关Nest.js的文档,但找不到正确的方法。

另外,我阅读了typeORM的官方 GitHub 文档。

这是我的代码。如果可以使用 EntityRepository 中的 find 方法来完成,那就太好了

import { DeleteResult, EntityRepository, Repository, UpdateResult } from "typeorm";
import { Reservations} from "src/Entities/reservations.entity";
import { Facility} from "src/Entities/facility.entity";
import { PaginationParams } from "src/pagination.model";
import { LessThanOrEqual } from "typeorm";



@EntityRepository(Reservation)
export class ReservationRepository extends Repository<Reservation> {

    
    
    async findByFacility(ustanovaId, paginationParams, dateParams): Promise<Reservation[]> {

        return await this.find({where: { termin: LessThanOrEqual(new Date(2021, 0, 1))},
             relations: ["users", "facility"],
             take: paginationParams.limit,
             skip: paginationParams.offset,
             order: {
                 [paginationParams.orderby]: paginationParams.order.toUpperCase()
             }});
    }


}
Run Code Online (Sandbox Code Playgroud)

Era*_*han 5

由于您没有提供有关ReservationFacility实体的正确信息,我猜测有两种可能的情况(通常这两种情况都是正确的)。您可以从其中选择代码解决方案。

1.Reservation实体有一个facility_id

const facilityId = "YourFacilityID";

return this.find({
  where: {
    termin: LessThanOrEqual(new Date(2021, 0, 1)),
    facility_id: facilityId
  },
  relations: ["users", "facility"],
  take: paginationParams.limit,
  skip: paginationParams.offset,
  order: {
    [paginationParams.orderby]: paginationParams.order.toUpperCase()
  }
});
Run Code Online (Sandbox Code Playgroud)

2.Reservation实体有facility引用

Reservation实体与实体具有OneToOneorManyToOne关系Facility,其中该关系被命名facility,并且Facility实体具有id等于facility_id您在问题中解释的内容。

const facilityId = "YourFacilityID";

return this.find({
  where: {
    termin: LessThanOrEqual(new Date(2021, 0, 1)),
    facility: { id: facilityId }
  },
  relations: ["users", "facility"],
  take: paginationParams.limit,
  skip: paginationParams.offset,
  order: {
    [paginationParams.orderby]: paginationParams.order.toUpperCase()
  }
});
Run Code Online (Sandbox Code Playgroud)

另外,return await实际上是多余的,您可以随时将其替换为return.

希望这可以帮助。干杯!