我们正在开发一个管理Google Cloud Datoreore项目访问权限的库。我们的数据存储区项目由多个名称空间组成(一个用于开发,一个用于测试等)。 要访问存储的数据,我们使用Google提供的“查询”构建器。我们需要对某个命名空间进行“种类查询”,但在docs中他们会解释
此类型的查询隐式限制为当前 命名空间。
我们尝试使用NamespaceManager更改当前命名空间,但由于这不是Google App Engine应用程序,因此无效。是否可以更改当前的命名空间?
答案 0 :(得分:3)
您可以(可选)在RunQueryRequest
上设置命名空间。对于您的示例(类型的元数据查询),Java代码将是:
Query.Builder query = Query.newBuilder();
query.addKindBuilder().setName("__kind__");
query.addProjectionBuilder().setProperty(makePropertyReference("__key__"));
RunQueryRequest.Builder req = RunQueryRequest.newBuilder()
.setQuery(query);
req.getPartitionIdBuilder().setNamespace("my_namespace");
datastore.runQuery(req.build());
并在Python中:
req = datastore.RunQueryRequest()
req.partition_id.namespace = 'my_namespace'
query = req.query
query.kind.add().name = '__kind__'
query.projection.add().property.name = '__key__'
datastore.run_query(req)