我想在我的查询中添加一个where()
子句,但是有条件地。特别地,我想仅当在URL中传递特定的querystring参数时才添加它。这可能吗?如果可以,我将如何着手进行?
router.get('/questions', function (req, res) {
knex('questions')
.select('question', 'correct', 'incorrect')
.limit(50)
.where('somecolumn', req.query.param) // <-- only if param exists
.then(function (results) {
res.send(results);
});
});
5条答案
按热度按时间kx7yvsdv1#
是的。使用修改。
应用于您的示例:
sqougxex2#
您可以将查询存储在变量中,应用条件where子句,然后执行它,如下所示:
z9smfwbn3#
实际上可以在
.where()
中使用queryBuilder
,如下所示:IMO @ItaiNoam的答案应该是
.modify()
的正确答案a7qyws3x4#
最简单的解决方案是
skipUndefined
ddarikpa5#
您可以通过检查查询字符串是否存在并运行其他查询来完成此操作。