【发布时间】: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 没有运气。
标签: javascript database orm adonis.js