有没有办法在 AdonisJS 4.1.0 中进行条件查询?

Posted

技术标签:

【中文标题】有没有办法在 AdonisJS 4.1.0 中进行条件查询?【英文标题】:is there a way to do conditional query in AdonisJS 4.1.0? 【发布时间】:2019-12-17 21:54:59 【问题描述】:

我正在关注 AdonisJs 的查询生成器:https://adonisjs.com/docs/4.1/query-builder#_introduction

我正在尝试做一些类似于在他们的“条件查询”子标题下发布的示例:

const query = Database.table('users')
if (username) 
  query.where('username', username)

但是,这会在我的后端发送一个错误。

有没有办法进行条件查询?在某些情况下,我需要使用 where 子句,而在其他基于布尔值的情况下,我需要所有数据,因此不需要 where。

我注意到“查询”变量(在上面的示例中)只有在链接到数据库类时才可链接。当我将其保存为变量时,它会引发错误(即query.where(...) 会引发错误)。

我目前的解决方案是为 3 个布尔条件提供 9 种可能性,并且每个查询都将从数据库类创建。不过我可能很快就会有超过 3 个条件。

有没有办法进行条件查询?

P.S:我知道我可以在一个 where 子句中包含多个字段,尽管这与我的问题无关。 IE。 .where( field1: true, field2: false)

【问题讨论】:

我想知道是否有任何快捷方式: const query = Database.table('users') .where( field1: boolean ? var1 : NOT_NULL, field2: boolean ? var2 : NOT_NULL , ) where var1 & var2 是 where 子句中使用的,如果布尔条件为真。在虚假情况下,不应应用 where 子句。这些字段的类型为字符串和整数。我试过把它作为 null、空对象和 !null 没有运气。 【参考方案1】:

没关系,

const query = Database.table('users')
if (username) 
  query.where('username', username)

有效。我不应该在数据库上使用 await。

【讨论】:

以上是关于有没有办法在 AdonisJS 4.1.0 中进行条件查询?的主要内容,如果未能解决你的问题,请参考以下文章

AdonisJs - 自定义 JWT uid 字段键

使用 adonisJs 从所有帖子中获取所有相关评论

使用 Adonisjs websocket 的 400 错误请求

将现有数据库与 AdonisJS 一起使用

adonisjs 类似php laravel 的mvc 框架

adonisjs 类似php laravel 的mvc 框架