如何使用Knex.js查询满足至少一个条件的结果?

时间:2018-10-11 11:23:11

标签: sql amazon-redshift knex.js

我有一个包含一组条件的数组,每个条件都有一些要满足的语句:

const conditions = [
  {
    statement.one = '',
    statement.two = ''
  },
  {
    statement.one = '',
    statement.two = ''
  },
  ...
]

我想让Knex知道,如果该行满足以下条件之一,则该行将被选中。

如果我事先知道我有多少条件,这可能很容易,然后我可以使用knex().where().orWhere()进行硬编码。但是,我不知道这一点。有没有一种动态方式可以循环浏览每个条件,检查执行情况,并且只要满足其中一个条件,就可以选择该行而不必担心其他条件?

1 个答案:

答案 0 :(得分:1)

查询构建器是可变的。因此,当您这样做时:

const statements = [
   { colName: 'firstName', value: 'Mikael' },
   { colName: 'firstName', value: 'Mr. Mikael' }
];

const builder = knex('myTable');
for (let statement of statements) {
   builder.orWhere(statement.colName, statement.value);
}
let result = await builder;

您将获得所有行,其firstName列的值为MikaelMr. Mikael