我有一个List<Key>
我想要检索完整的数据记录,但是应用了额外的过滤功能。
我可以通过dbService.lookup(Project, keys)
检索它们,但lookup
不允许我应用其他过滤。
这基本上就是我想做的事情:
dbService.query(Project)
..filter('__key__ IN', keys)
..filter('acl_read IN', roles)
..run();
但由于Google Cloud的Dart实施不支持__key__
,因此无法运行此查询。
我能做到:
projects = dbService.lookup(keys);
projects.removeWhere((project) => (project.acl_read.fold(false, (result, key) => result || members.contains(key))));
但这似乎不是实现这一目标的正确方法。
那么这样做的正确方法是什么?
答案 0 :(得分:1)
没有基于服务器的方法来执行您要执行的操作,因此您在客户端进行过滤的方法就是如何执行此操作..
或者,如果您知道所有使用过滤器查询所有键的结果都会产生一小组键,那么您在List中所拥有的键,然后先执行完整查询,然后找到结果联合列表