首页 > 解决方案 > Google 应用制作工具表查询 _notContains 不起作用

问题描述

应用制作工具 > 页面 > 表格 > 事件 > 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 的过滤器也可以。

谁能说出为什么?或者更好的问题是:如何在应用程序制造商中设置过滤后的表格视图?

再次:您如何为您的表格准确设置过滤器?

标签: google-app-maker

解决方案


根据官方文档

过滤器startsWithnotStartsWithcontainsnotContains仅支持字符串。

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

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

它只会返回字段readyByUsers包含字符串的结果Sussane。如果之后您运行代码:

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

它将返回零个结果,因为加载的所有记录都包含 string 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();

推荐阅读