使用祖先的投影查询会引发错误400

时间:2019-10-08 00:46:17

标签: python google-cloud-datastore gcloud

通过执行以下操作将以下数据添加到数据存储中:

    key = ds.key(
            'User', 'alice',
            'id'
        )

    entity = datastore.Entity(
        key=key,
    )

    entity.update({"data": "big amount of information"})
    entity.update({"property_name": "confidential"})
    ds.put(entity)

然后,为了减少资源使用,我尝试通过使用以下查询来使用投影查询来获取较小的属性,而忽略实际上很大的“数据”:

    key = ds.key(
        'User', 'alice'
    )
    query = ds.query(ancestor=key)
    query.projection = ["property_name"]

    entities = list()

    for entity in query.fetch():
        entities.append(entity)

    return entities

但我收到此错误:

google.api_core.exceptions.InvalidArgument: 400 Unable to plan or invalidate query.

1 个答案:

答案 0 :(得分:2)

祖先查询需要组合索引,即使您要投影单个属性。确保已完成操作。