Как я могу использовать Knex.js для запроса результатов, которые удовлетворяют хотя бы одному из условий? - PullRequest
0 голосов
/ 11 октября 2018

У меня есть массив, содержащий набор условий, каждое условие имеет несколько операторов для удовлетворения:

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

Я хотел бы, чтобы Knex знал, что если строка удовлетворяет одному из этих условий, строка получаетвыбранный.

Было бы легко, если бы я знал, сколько условий у меня есть заранее, я мог бы тогда просто жестко кодировать с knex().where().orWhere().Однако я этого не знаю.Есть ли динамический способ, которым я могу циклически проходить через каждое условие, проверять выполнение, и пока одно из этих условий выполняется, строка выбирается, не беспокоясь о других?

1 Ответ

0 голосов
/ 12 октября 2018

Конструктор запросов изменчив.Поэтому, когда вы сделаете:

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 имеет значение Mikael или Mr. Mikael

...