Заказ Google Datastore с предками - PullRequest
0 голосов
/ 25 июня 2018

Язык: Python.

Я использую хранилище данных Python lib, все работает отлично.При использовании запроса к хранилищу данных для сортировки результата запроса я могу добавить query.order = ['name']; для сортировки результата.Но когда запрашиваете таблицу с предками, например:

ancestor = client.key('user', name, namespace = NAMESPACE)
query = client.query(kind='project', ancestor=ancestor, namespace = NAMESPACE)

Затем я устанавливаю порядок: query.order = ['name'];, он не работает.Я хочу отсортировать по виду project, чей предок добрый user.Сообщение об ошибке: «400 не найдено соответствующих индексов. Рекомендуемый индекс: ↵- вид: проект↵ предок: да↵ свойства: ↵ - имя: имя», представляющий собой пример yaml.Но я здесь не использую yaml.Я думаю, что должен быть способ отсортировать результат, хотя есть предок.

1 Ответ

0 голосов
/ 25 июня 2018

Все запросы к хранилищам данных основаны на индексах.Из Индексы :

Каждое хранилище данных Google Cloud запрос вычисляет свои результаты, используя один или несколько индексов, которые содержат ключи сущностей в последовательности, определенной свойствами индекса, ипо желанию, предки сущности.Индексы обновляются, чтобы отражать любые изменения, которые приложение вносит в свои сущности, так что правильные результаты всех запросов доступны без дополнительных вычислений.

Ошибка, которую вы получаете, происходит из хранилища данныхсторона, указывающая, что в хранилище данных отсутствует индекс, необходимый для вашего конкретного запроса.Это не связано с выполнением запроса предка и / или с использованием yaml в коде приложения.

Ссылка на yaml просто приходит от способа развертывания индексов в хранилище данных (это то, что вам нужно сделатьчтобы ваш запрос работал), см. Развертывание или удаление индексов .

Так что вам нужно создать файл index.yaml, содержащий хотя бы спецификацию индекса, указанную в сообщении об ошибке (и любые другиеиндексы, которые вам могут понадобиться для других запросов, если таковые имеются), разверните его в хранилище данных, дождитесь, пока индекс перейдет в состояние Serving на странице Indexes (что может занять некоторое время), после чегоВаш запрос должен работать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...