Не съм потребител на Knex.js, но като гледам документите, изглежда, че използването на синтаксиса на JavaScript обект от Knex за дефиниране на предикати е начинът, по който постига параметризация.
Въпреки това, тъй като използвате вградени функции, трябва да използвате whereRaw
.
Разглеждане на документите ( http://knexjs.org/#Builder-whereRaw ) и ( http://knexjs.org/#Raw-Bindings ) Мисля, че искате да направите това:
.whereRaw('question LIKE :term OR note LIKE :term OR user_name LIKE :term', { term: '%' + term + '%' ] } )
Knex няма orWhereRaw
, така че трябва да използвате дългата версия, ако искате логически да разделите предикатите:
term = '%' + term + '%';
.orWhere( knex.raw( 'question LIKE ?', [ term ] ) )
.orWhere( knex.raw( 'note LIKE ?', [ term ] ) )
.orWhere( knex.raw( 'user_name LIKE ?', [ term ] ) )
Забележете ?
е за позиционни параметри и :term
е за именувани параметри.