Сохраняя встроенную сущность в хранилище данных, она игнорирует exclude_from_indexes из встроенной

Я пытаюсь использовать встроенную сущность с полем размером более 1500 байт. На основании документации рекомендуется исключить это поле из индексов, и оно должно разрешать 1 МБ.

Я добавляю это поле к ключу exclude_from_indexes встроенного объекта. Когда я пытаюсь сохранить родительский объект, он сообщает, что поле больше 1500 байт. Если я сохраняю встроенную сущность независимо, она работает.

Исключается ли exclude_from_indexes на встроенном объекте?

client = datastore.Client(dataset_id=projectID)
record_key = client.key('Record', my_id)
record_entity = datastore.Entity(record_key)

embedded_key = client.key('Data', another_id)
embedded_entity = datastore.Entity(key=embedded_key,exclude_from_indexes=('big_field',))
embedded_entity['field1']='1234'
embedded_entity['big_field']='large string bigger than 1500bytes'

record_entity['RandomFieldName']=embedded_entity

client.put(record_entity)
#Error: gcloud.exceptions.BadRequest: 400 The value of property "big_field" is longer than 1500 bytes.

client.put(embedded_entity)
#No Error

1 ответ

Решение

Это должен быть действительный звонок. Вы можете попробовать это сами, используя API Explorer для Datastore.

Это скорее ошибка внутри gcloud-python который неправильно передает информацию индексации при использовании встроенного объекта.

Я вижу, вы также подали ошибку на gcloud-python GitHub, я бы порекомендовал следовать там.

Другие вопросы по тегам