使用Dart在数据存储区中按键查询

时间:2016-05-14 20:02:38

标签: google-app-engine dart google-cloud-datastore

我有一个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))));

但这似乎不是实现这一目标的正确方法。

那么这样做的正确方法是什么?

1 个答案:

答案 0 :(得分:1)

没有基于服务器的方法来执行您要执行的操作,因此您在客户端进行过滤的方法就是如何执行此操作..

或者,如果您知道所有使用过滤器查询所有键的结果都会产生一小组键,那么您在List中所拥有的键,然后先执行完整查询,然后找到结果联合列表