NeedIndexError для одного свойства (Google AppEngine + Firestore) - PullRequest
0 голосов
/ 01 июня 2018

У меня есть приложение 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 и развернуть его вместо этого?

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