如何以编程方式更改Google Cloud Datastore项目的命名空间?

时间:2014-07-17 06:28:48

标签: java google-cloud-datastore

我们正在开发一个管理Google Cloud Datoreore项目访问权限的库。我们的数据存储区项目由多个名称空间组成(一个用于开发,一个用于测试等)。 要访问存储的数据,我们使用Google提供的“查询”构建器。我们需要对某个命名空间进行“种类查询”,但在docs中他们会解释

  

此类型的查询隐式限制为当前   命名空间。

我们尝试使用NamespaceManager更改当前命名空间,但由于这不是Google App Engine应用程序,因此无效。是否可以更改当前的命名空间?

1 个答案:

答案 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)