#google-cloud-platform #google-cloud-firestore #elixir
#google-облачная платформа #google-cloud-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
Комментарии:
1. Привет, @dominik, интересно, что у меня такая же ошибка; в любом случае, я начал использовать ваш пример, чтобы понять, как работает библиотека, поскольку примеров совершенно нет (даже в папке test :/).
Ответ №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 трудно найти, это может быть кому-то полезно!