Jeg er ikke en Knex.js-bruger, men ser man på dokumenterne ser det ud til, at Knex' brug af JavaScript-objektsyntaks til at definere prædikater er, hvordan den opnår parameterisering.
Men da du bruger indbyggede funktioner, skal du bruge whereRaw
.
Ser på dokumenterne ( http://knexjs.org/#Builder-whereRaw ) og ( http://knexjs.org/#Raw-Bindings ) Jeg tror, du vil gøre dette:
.whereRaw('question LIKE :term OR note LIKE :term OR user_name LIKE :term', { term: '%' + term + '%' ] } )
Knex har ikke en orWhereRaw
, så du bør bruge langhåndsversionen, hvis du logisk vil adskille prædikaterne:
term = '%' + term + '%';
.orWhere( knex.raw( 'question LIKE ?', [ term ] ) )
.orWhere( knex.raw( 'note LIKE ?', [ term ] ) )
.orWhere( knex.raw( 'user_name LIKE ?', [ term ] ) )
Bemærk ?
er for positionelle parametre og :term
er for navngivne parametre.