如何过滤包含给定字符串的airtable记录,但也可能包含其他字符串?

时间:2017-02-24 01:10:32

标签: javascript node.js airtable

使用airtable api的filterByFormula方法,我可以查询并选择包含一个特定项目(字符串)的记录。但是,此查询仅返回仅具有该特定字符串的记录。

在此处搜索airtable api公式文档: https://support.airtable.com/hc/en-us/articles/203255215-Formula-Field-Reference 没有答案。

我有什么:

base('Table').select({
    view: 'Main View',
    filterByFormula: `Column = "${myFilter}"`
}).firstPage(function(err, records) {
    if (err) { console.error(err); reject( err ); }

    records.forEach(function(record) {
        console.log(record.get('Another Column'));

    });

同样,这将返回仅包含myFilter的记录,而不返回包含给定列中任何其他值的记录。

编辑:airtable将这些列称为“多选”字样。字段类型。

1 个答案:

答案 0 :(得分:3)

似乎airtable支持SEARCH形式的indexOf的js。来自文档:

  

SEARCH(find_string,within_string,position)
  返回within_string中第一次出现的find_string的索引,从position开始。默认情况下,位置为0.

因此,我们可以使用以下作为搜索过滤器值

filterByFormula: `SEARCH("${myFilter}", Column) >= 0`

这会在我们的Column中搜索myFilter的存在,并返回myFilter位于Column内某个位置的任何结果。

注意:值得注意的是,您的myFilter属性最好至少有2个字符数用于表现。文档也没有指定不区分大小写的选项,因此如果要返回结果而不管上限或下限,您可能希望将Column"${myFilter}"包装在LOWER()函数中案例字符。例如

filterByFormula: `SEARCH(LOWER("${myFilter}"), LOWER(Column)) >= 0`