Самое простое - заставить его использовать значение напрямую, изменив переменную на ${pageLimit:raw}
.
Более безопасный подход - создать собственный настраиваемый тип для него, используя Форматирование настраиваемого типа :
const limit = val => ({rawType: true, toPostgres: () => val ?? 'ALL'});
Затем передать результат функции в качестве значения в запрос, который выдаст:
limit(0)
=> 0
limit(123)
=> 123
limit()
=> ALL
limit(null)
=> ALL
Второй подход лучше, но обычно вы можете заключить в него всю LIMIT
logi c, а не только предельное значение:
const limit = val => ({ rawType: true, toPostgres: () => val ? `LIMIT ${val}` : '' });
Чтобы создать все предложение LIMIT
только при наличии фактический предел, который будет применяться:
limit(0)
=> `` limit()
=> `` limit(null)
=> `` limit(123)
=> LIMIT 123
примеры:
db.any('SELECT * FROM table $1', [limit(123)]);
//=> SELECT * FROM table LIMIT 123
db.any('SELECT * FROM table ${limit}', {limit: limit(123)});
//=> SELECT * FROM table LIMIT 123