📜  typeorm 中的范围 (1)

📅  最后修改于: 2023-12-03 15:35:24.013000             🧑  作者: Mango

TypeORM中的范围

TypeORM是一个功能强大、易于使用的ORM(Object-Relational Mapping)框架,它支持多种数据库,并提供了许多方便的功能,其中之一就是Range。Range是一种表示数据范围的类型,它可以轻松方便地添加到你的TypeORM实体中。

使用范围
定义实体属性

要使用范围,首先需要定义一个Range类型的属性。例如,如果要在实体中添加'price'属性,其值的范围为0到100,则可以按如下方式定义:

import { Entity, Column } from 'typeorm';
import { Range } from 'typeorm';

@Entity()
export class Product {
  @Column()
  name: string;

  @Column(() => Range)
  price: Range;
}

上述代码中,'Column'装饰器将'price'属性标记为实体的一个列,而'Range'表示该列的类型为范围。

添加范围

要向'price'属性添加范围,可以使用范围类的构造函数创建一个范围对象并将其分配给属性,如下所示:

const product = new Product();
product.name = 'apple';
product.price = new Range(0, 100);
查询范围

查询实体时,可以使用'RelationQueryBuilder'中的以下方法来查询范围:

  • 'between':查询实体属性的值在给定范围内的实体。
  • 'notBetween':查询实体属性的值不在给定范围内的实体。
  • 'equal':查询范围等于给定的范围的实体。
  • 'notEqual':查询范围不等于给定的范围的实体。
  • 'in':查询实体属性的值在给定范围内的实体。
  • 'notIn':查询实体属性的值不在给定范围内的实体。

例如,要查询价格在0到100之间的商品,可以使用如下代码:

const query = await getRepository(Product)
  .createQueryBuilder('product')
  .where('product.price BETWEEN :start AND :end', { start: 0, end: 100 })
  .getMany();

在上述代码中,'createQueryBuilder'方法返回一个'RelationQueryBuilder'对象,该对象可以用于构建查询。使用'where'方法指定查询条件,其中'product.price BETWEEN :start AND :end'表示查询'price'属性在0到100范围内的实体。

总结

TypeORM中的范围是一种方便的功能,因为它使您可以轻松地处理数据范围。通过定义范围属性、添加范围和使用'RelationQueryBuilder'查询范围,您可以获得更灵活、更简单的数据库操作。