У меня есть приложение Python (стандартная среда), которое я загрузил в Google AppEngine, которое использует Firestore для хранения.
Вот упрощенная версия моего класса моделей:
from google.appengine.ext import ndb
class User(ndb.Model):
displayName = ndb.StringProperty()
@classmethod
def query_users(cls):
query = cls.query().order(cls.displayName)
db_objects = query.fetch()
# do something with db_objects
Это работает, как и следовало ожидать на локальном сервере разработки (dev_appserver.py).
Когда я не использую вызов .order (cls.displayName), я не получаю ошибок, но, очевидно,результаты не сортируются.
Когда я использую вызов .order (cls.displayName), я получаю следующую ошибку:
NeedIndexError: no matching index found.
The suggested index for this query is:
- kind: User
properties:
- name: displayName
Все (10-15 тест) Пользовательдокументы имеют свойство displayName в запрашиваемом экземпляре Firestore.Я думал, что Firestore генерирует индекс для каждого отдельного свойства?
Я нашел немного похожий вопрос относительно составных индексов , но моя проблема больше связана с индексом для одного свойства.
Кроме того, страница indexes в консоли Google Cloud Platform (GCP) для этого проекта не показывает никаких индексов и вместо этого имеет следующий текст:
To use Firestore during Beta, open the Firebase console.
Индексы консоли Firebaseстраница (https://console.firebase.google.com/project/$PROJECT_ID/database/firestore/indexes) не имеет индексов в списке, составных или других.
У меня есть автоматически созданный файл index.yaml со сложными индексами (и без простых индексов).
Я такжеу меня есть файл firestore.indexes.json, в котором на данный момент ничего не указано:
{
"indexes": []
}
(я создал несколько правил базы данных в файле firestore.rules и создал этот файл одновременно.)
Из чтения документации Firestore по индексам файл firestore.indexes.json должен быть предназначен для сложных (многозначных) индексов, а не для индексов с одним свойством.
Итак, сделайтеes Google AppEngine (GAE) / Google Cloud Platform (GCP, стандартная среда Python) хорошо работают с индексами Firestore?
Что более важно, есть ли у кого-нибудь идеи, как решить эту проблему с помощью индексов с одним свойством?
При повторном обращении игнорируется ли файл index.yaml, когда Firestore используется для хранилища данных?Должен ли я заново создать индексы в моем файле index.yaml в файле firestore.indexes.json и развернуть его вместо этого?