Google 应用制作工具 table 查询 _notContains 不起作用

Google App Maker table query _notContains doesn't work

应用制作工具 > 页面 > Table > 事件 > onAttach

作品:

var datasource = widget.datasource;
datasource.query.filters.readByUsers._contains = 'Susanne';
datasource.load();

无效:

var datasource = widget.datasource;
datasource.query.filters.readByUsers._notContains = 'Susanne';
datasource.load();

任何带 _equals 的过滤器都可以。

谁能说说为什么? 或者更好的问题是: 您如何在应用制作工具中设置过滤的 table 视图?

再次: 您如何为 table 设置过滤器?

根据 official documentation:

Filters startsWith, notStartsWith, contains, notContains are only supported for strings.

因此,如果您的字段是字符串字段,它肯定可以工作。但是,我认为这行不通的唯一原因是,如果您在未先清除前一个过滤器的情况下在另一个过滤器之上应用一个过滤器。即,如果您 运行 以下代码:

var datasource = widget.datasource;
datasource.query.filters.readByUsers._contains = 'Susanne';
datasource.load();

只有 return 字段 readyByUsers 包含字符串 Sussane 的结果。如果在那之后你 运行 代码:

var datasource = widget.datasource;
datasource.query.filters.readByUsers._notContains = 'Susanne';
datasource.load();

它将 return 为零结果,因为加载的所有记录都包含字符串 Susanne。因此,它可能会给您带来这样的效果,即它实际上不起作用。

为确保您的过滤器正常工作,您首先需要在应用新过滤器之前清除之前的过滤器,除非您明确希望在第一个过滤器之上应用第二个过滤器。为此,您需要 运行 clearFilters 方法。所以你的代码应该是这样的:

var datasource = widget.datasource;
datasource.query.clearFilters();
datasource.query.filters.readByUsers._contains = 'Susanne';
datasource.load();

或者像这样:

var datasource = widget.datasource;
datasource.query.clearFilters();
datasource.query.filters.readByUsers._notContains = 'Susanne';
datasource.load();

正确答案是:

因为该字段是 "null"

因此您需要添加过滤器“_notEquals = null;”得到结果