繁体   English   中英

类型ORM“或”运算符

[英]TypeORM "OR" operator

我在 TypeORM 文档和源代码中都找不到任何 OR 运算符的概念。 它是否支持它?

我正在尝试使用存储库执行基本搜索。

db.getRepository(MyModel).find({
  name : "john",
  lastName: "doe"
})

我知道这会生成一个 AND 操作,但我需要一个 OR 操作,所以 SQL 看起来像:

name='john' OR lastName='doe'

我是否被迫将查询生成器用于类似这样的基本内容?

db.getRepository(MyModel).find({
  where: [
      { name: "john" },
      { lastName: "doe" }
  ]
})

将数组传递到where

我遇到了同样的问题,但我使用QueryBuilder解决了这个问题。

这将是一个例子。

return await getRepository(MyModel)
  .createQueryBuilder()
  .where("name = :name OR lastName = :lastName", {
    name: "john",
    lastName: "doe"
  })
  .getMany();

要在sub-clause中使用OR ,我必须重复main-clause

userRepository.find({
  where: [
    {
      firstName: 'Timber',
      lastName: 'Saw',
      project: {
        name: 'TypeORM',
      },
    },
    {
      firstName: 'Timber',
      lastName: 'Saw',
      project: {
        initials: 'TORM',
      },
    },
  ],
});

查找所有Timber Saw具有name = "TypeORM"initials = "TORM"的项目

您可以通过执行以下操作将“OR”子句与附加的“AND”结合起来。

db.getRepository(MyModel).find({
  where: [
      { name: "john", lastName: "doe" },
      { age: 20 }
  ]
})

这将导致

select * from model where (name = "john" and lastname = "doe") OR age = 20

希望这可以帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM