Новый Google Cloud Firestore в режиме хранилища данных Уточнение запросов - PullRequest
1 голос
/ 08 июня 2019

Мне трудно понять, как на самом деле работают запросы для транзакций с новым режимом хранилища данных Google Firestore (я уже работал с предыдущей версией Datastore).

Согласно документации это преимущества использования Google Cloud Direbase в режиме хранилища данных:

  • Возможная согласованность, все запросы Cloud Datastore становятся строго согласованными.
  • Транзакции больше не ограничены.до 25 групп объектов.
  • Запись в группу объектов больше не ограничивается 1 в секунду.

Поскольку запросы теперь строго согласованы, я предположил, что это будетможно использовать запросы не-предков внутри транзакции, но в документации сказано иначе:

Запросы внутри транзакций должны быть запросами-предками

Поразмыслив над этим, я решил проверить правильность своих подозрений:

query := datastore.NewQuery("Entity").Filter("indexed_property =", s)
ctx := context.Background()
tx, err := client.NewTransaction(ctx, datastore.ReadOnly)
if err != nil {
  fmt.Pritnln(err)
}
query = query.Transaction(tx)
it := d.client.Run(ctx, query)
e := new(Entity)
_, err = it.Next(e)
if err != nil || err == iterator.Done {
  fmt.Println(err)
}

К моему удивлению, это сработалобезотказно.Так это ошибка или правильное поведение?

1 Ответ

2 голосов
/ 11 июня 2019

Вы правы. Это была ошибка в документации. Cloud Firestore в режиме Datastore снимает ограничение на то, что запросы внутри транзакций должны быть запросами-предками.

Страница обновлена. Извиняюсь за путаницу.

...