• Geral
  • Como buscar dados do firebase com bloco de API

Fiz um exemplo para você:
Pode usar a url como
https://[PROJECT_ID].firebaseio.com/[NODE_NAME]/[TAG_NAME].json
No caso usei https://gas-bootblocks-default-rtdb.firebaseio.com/users/ + tag + .json
sendo a tag o valor da pesquisa la na entrada de texto em html.

Vantagens: Pode usar os blocos de lista para trabalhar com o retorno, no seu problema anterior, basta selecionar o index 1 da lista que retorna, assim vai ter acesso aos dados.
Desvantagens: Não é possível autenticar o usuário tão facilmente quanto quando usamos o SDK do firebase (blocos do firebase) por isso talvez tenha que usar as regras false para leitura.

Código exemplo:

firebase-api.zip
61kB

    dvdrothen
    É uma pena que ainda não encontrei a maneira de tirar os dados de uma árvore no valor do rótulo 😥

    Base de dados:

    Blocos:

    Console:

    dvdrothen Quero fazer uma galeria dinâmica com as informações que recebo da tag "gallery"

    Agora é só tratar como uma lista. Pode usar o bloco de index da lista para pegar apenas uma imagem ou usar o "para cada item da lista" que está em laços de repetição para percorrer todas as imagens.

      dvdrothen O problema é que ele não o detecta como uma lista.

      Saída do console: indefinido.
      Acho que primeiro teria que passar de object para json ou list para me permitir usá-lo

      dvdrothen

      Selecionar assim funciona para mim:

      O problema é como fazer o loop para que imprima todas as imagens.

      Fiz uma "cópia" dos seus dados para testar..
      Ficou assim no firebase:

      Minha url da requisição ficou assim:
      https://[projeto]/users/user1/gallery.json

      Tratei o resultado como lista e funcionou:

        dvdrothen Ok, isso funcionou para mim. Mas só imprime os valores, como você faria no caso de querer imprimir as etiquetas e não os valores?

        Pode usar o bloco Converter Lista para Texto em Funções e tentar trabalhar como texto. A partir de Texto pode mudar o tipo de objeto usando o bloco de substituir no texto, ou pode fazer uma lista separando pelas "," e dpois pelos ":"
        é um pouco mais complexo mas é possível.
        Só para referência, o bloco Converter Lista para Texto corresponde ao JSON.stringify em Javascript

          dvdrothen
          Ao substituir " por nada, ele apenas o remove do primeiro que encontrar, mas não em todo o texto.

          Antes de substituir:

          Substitua por ": (apenas remove o " do primeiro que encontrar)

          Sim, esse comportamento é normal no JavaScript. Para substituir todos precisa ser usado regex

            Segue um exemplo:

            Use o bloco "Texto sem formatação" que está em "texto" (bloco é novo, se não aparecer Ctrl + f5).
            Coloque o seguinte regex: /"/g

            Nota: Não é possível usar o bloco de trexto padrão do blockly por que ele formata tirando barras invertidas e outros caracteres. Então criei esse bloco para que possamos usar um texto "cru"

              dvdrothen
              Isto não funciona para mim:

              Nem funciona assim:

              Use o bloco de texto sem formatação para colocar o Regex: