语言:NodeJS
在查询Google云端数据时是否可以同时使用订单和 ancestorKey ?
类似的东西:
const ancestorKey = datastore.key({namespace: 'MyNameSpace',
path: ['MyParentEntity', 'parent_entity_id']});
const query = datastore.createQuery('MyNameSpace', 'my_child_entity')
.order('someProperty', {descending: true})
.hasAncestor(ancestorKey);
注意:以上操作不起作用
答案 0 :(得分:1)
TL; DR:是的,这是可能的。
至少通过API,这种查询是可能的。
示例:
对于Datastore queries,您需要为要查询的每个属性或属性组合建立索引。 Datastore provides built-in single-property indexes by default,但您的查询是复合的(祖先+ order_property),因此您必须构建自己的索引。为此,首先编写index.yaml
文件(我正在创建两个索引,一个用于升序排序,另一个用于降序):
indexes:
- kind: child
ancestor: yes
properties:
- name: order
direction: desc
- kind: child
ancestor: yes
properties:
- name: order
direction: asc
使用gcloud datastore create-indexes index.yaml
等待索引完成构建,然后您可以执行查询。 API调用:[ascending] [descending]
您可以在cloud shell。
中测试此示例知道API正常运行,您只需在idiomatic library中实现此功能。确保正确定义了实体,并创建了索引。如果您有疑问,只需尝试通过API查询它是否应该在节点内工作。