Как исправить проблему с Google Firestore в Elixir?

Я всегда сталкиваюсь с проблемой при звонке: GoogleApi.Firestore.V1beta1.Api.Projects.firestore_projects_databases_documents_run_query(), как показано ниже.

Я уже пробовал разные способы ввода и форматирования, а также разные коллекции firestore.

{:ok, token} = Goth.Token.for_scope("https://www.googleapis.com/auth/cloud-platform")

conn = GoogleApi.Firestore.V1beta1.Connection.new(token.token)

query = %GoogleApi.Firestore.V1beta1.Model.RunQueryRequest{
  structuredQuery: %{
    :from => %{:collectionId => "demo"},
    :limit => 1
  }
}

GoogleApi.Firestore.V1beta1.Api.Projects.firestore_projects_databases_documents_run_query(
  conn,
  "projects/demo/databases/(default)/documents",
  body: query
)

Результат:

** (BadMapError) expected a map, got: [%{"readTime" => "2019-04-07T20:23:48.219664Z"}]
    (elixir) lib/map.ex:437: Map.get([%{"readTime" => "2019-04-07T20:23:48.219664Z"}], "document", nil)
    lib/poison/decoder.ex:53: anonymous fn/3 in Poison.Decode.transform_struct/4
    (stdlib) maps.erl:257: :maps.fold_1/3
    lib/poison/decoder.ex:52: Poison.Decode.transform_struct/4
    lib/poison.ex:70: Poison.decode/2

Привет @dominik, интересно, у меня такая же ошибка; в любом случае я начал использовать ваш пример, чтобы понять, как работает библиотека, так как примеров полное отсутствие (даже в тестовой папке :/).

Bruno Ripa 12.07.2019 08:48
Создание приборной панели для анализа данных на GCP - часть I
Создание приборной панели для анализа данных на GCP - часть I
Недавно я столкнулся с интересной бизнес-задачей - визуализацией сбоев в цепочке поставок лекарств, которую могут просматривать врачи и...
3
1
458
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Что бы это ни стоило, мне удалось загрузить документ, выполнив следующие действия:

{:ok, token} = Goth.Token.for_scope("https://www.googleapis.com/auth/datastore")
conn = GoogleApi.Firestore.V1.Connection.new(token.token)
{:ok, document} = GoogleApi.Firestore.V1.Api.Projects.firestore_projects_databases_documents_get(
  conn,
  "projects/{project_id}/databases/(default)/documents/{collection_id}/{document_id}"
)

где переменные {XXX} заменены фактическими значениями.

Возможно, это не совсем ваш вариант использования, но, поскольку примеры использования Firestore в Elixir трудно найти, это может быть кому-то полезно!

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