服务器从前端ajax调用中获取一组查询术语:
req.query.filterTerms=['black', 'white', 'green']
我需要将每个过滤器链接到bodybuilder查询:
var body=bodybuilder()
.query('match', 'searchable', req.query.querytext)
.from(i)
.build();
如何将数组中每个查询项的.filter()方法/函数动态链接到bodybuilder实例?
答案 0 :(得分:0)
对于有类似问题的任何人,尝试使用bodybuilder实例上的build方法创建的body对象的console.log,手动在实例上插入过滤器方法,并手动输入参数。它将显示结构您可以使用附加到bodybuilder过滤器子句。
答案 1 :(得分:0)
您可以使用reduce:
const filterTerms = ['red', 'green', 'black'];
const body = bodybuilder();
body.query('match', 'searchable', 'foobar');
const chainedFilter = filterTerms.reduce((filterBody, term) => {
return filterBody.filter('match', 'term', term)
}, body);
console.log(JSON.stringify(body.build(), null, 2))

<script src="https://rawgit.com/danpaz/bodybuilder/master/browser/bodybuilder.min.js"></script>
&#13;
这相当于将命令链接在一起。