我们正在开发一个库,用于管理对Google Cloud Datastore项目的访问。我们的数据存储项目由多个名称空间组成(一个用于开发,一个用于测试等)。要访问存储的数据,我们使用Google提供的查询构建器。我们需要一个用于特定名称空间的“种类查询”,但是在他们的docs中,他们解释
此类型的查询隐式限于当前命名空间。
我们尝试使用NamespaceManager更改当前的名称空间,但是由于它不是Google App Engine应用程序,因此无法正常工作。是否可以更改当前名称空间?
您可以(可选)在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)