Can I conditionally add a where() clause to my knex query?

后端 未结 4 983
你的背包
你的背包 2020-12-08 02:32

I want to add a where() clause in my query, but conditionally. Specifically, I want it added only if a sepecific querystring parameter is passe

4条回答
  •  独厮守ぢ
    2020-12-08 02:49

    Yes. Use modify.

    As applied to your example:

    router.get('/questions', function (req, res) {
        knex('questions')
            .select('question', 'correct', 'incorrect')
            .limit(50)
            .modify(function(queryBuilder) {
                if (req.query.param) {
                    queryBuilder.where('somecolumn', req.query.param);
                }
            })   
            .then(function (results) {
                res.send(results);
            });
    });
    

提交回复
热议问题