我正在RESTlet中构建搜索。我坚持创建一个基于transactionumber
的优雅过滤器。我想用 ANYOF 运算符过滤它,传入值的数组,但这似乎不可能。
我找到的唯一解决方案是将数组预处理成一串数字并使用条件SQL函数来测试它:
search.createFilter({
name : 'formulanumeric',
formula : 'case when TO_NUMBER({transactionnumber}) in ('
+ tranids.join(',') // e.g. in (741,744)
+ ') then 1 else 0 end',
operator : search.Operator.NOTEQUALTO,
values : 0
});
当然有一种更好的方法。上面有一个(轻微的)性能命中,将数组转换为字符串,我担心公式数字字段的限制 - 即长度公式字符串。
答案 0 :(得分:-1)
交易号是一个文本字段,因此您无法在尝试使用 anyof 运算符。您必须将 is 与filterExpressions一起使用,并将它们与或运算符结合。
您可以尝试以下类似操作
transactionNumbersList = ['abc', 'xyz'];
var searchFilters = [];
transactionNumbersList.forEach(function (transactionNumber) {
searchFilters.push(['transactionnumber', 'is', transactionNumber], 'or')
});
// pop trailing `or`
searchFilters.pop();