Firebase-tools: Emulador de funções mantendo apenas o último acionador de banco de dados em tempo real

Criado em 18 jul. 2019  ·  6Comentários  ·  Fonte: firebase/firebase-tools

[OBRIGATÓRIO] Informações do ambiente


firebase-tools:
firebase: 7.1.1
nó: v10.16.0
java: 11.0.2


Plataforma:
Mac OS

[OBRIGATÓRIO] Caso de teste

Ele aparece nesta linha, firebase-tools / functionsEmulator.ts em dad143c42445056014f6f48cc9dfa13156e3c186 · firebase / firebase-tools · GitHub
, a solicitação para adicionar um novo gatilho está substituindo os gatilhos anteriores adicionados em vez de ser adicionado à lista

[OBRIGATÓRIO] Passos para reproduzir

curl ' http: // localhost : 9000 / .settings / functionTriggers.json? ns = test-project' -X PUT -H 'autorização: Proprietário do portador' --data-binary '[{"nome": "projetos / teste -project / locations / _ / functions / NewPost "," path ":" / posts / {ownerId} / {postId} "," event ":" supplies / google.firebase.database / eventTypes / ref.create "," tópico ":" projects / test-project / topics / NewPost "}] '--compressed
{"status": "ok"}

curl ' http: // localhost : 9000 / .settings / functionTriggers.json? ns = test-project' -H 'autorização: Bearer owner' --compressed
[{"name": "projects / test-project / locations / _ / functions / NewPost", "path": "/ posts / {ownerId} / {postId}", "event": "owners / google.firebase. database / eventTypes / ref.create "," topic ":" projects / test-project / topics / NewPost "}]

curl ' http: // localhost : 9000 / .settings / functionTriggers.json? ns = test-project' -X PUT -H 'autorização: Proprietário do portador' --data-binary '[{"nome": "projetos / teste -project / locations / _ / functions / UpdatePost "," path ":" / posts / {ownerId} / {postId} "," event ":" owners / google.firebase.database / eventTypes / ref.update "," tópico ":" projects / test-project / topics / UpdatePost "}] '--compressed
{"status": "ok"}

curl ' http: // localhost : 9000 / .settings / functionTriggers.json? ns = test-project' -H 'autorização: Bearer owner' --compressed
[{"name": "projects / test-project / locations / _ / functions / UpdatePost", "path": "/ posts / {ownerId} / {postId}", "event": "owners / google.firebase. database / eventTypes / ref.update "," topic ":" projects / test-project / topics / UpdatePost "}]

[REQUIRED] Comportamento esperado

Ambos os gatilhos de banco de dados seriam adicionados e listados no emulador de banco de dados

[OBRIGATÓRIO] Comportamento real

Cada chamada está substituindo a chamada anterior

emulator-suite database functions bug

Todos 6 comentários

@gpfunk obrigado por relatar isso! Vou investigar isso agora e ver se consigo reproduzir.

Confirmado que é um bug, agora para descobrir onde ele mora.

Boa Sorte Vá com Deus :)

Ok, isso é uma daquelas coisas "funcionando como planejado, mas ainda é um bug". Basicamente, o código firebase-tools (como você notou) está enviando um PUT para todo o recurso functionTriggers de cada função, que o substitui.

O que realmente precisamos é de uma operação de "upsert" implementada no emulador RTDB que possamos chamar usando um nome de gatilho como um ID exclusivo. Isso é o que o Firestore tem. Falaremos sobre isso hoje e esperamos encontrar uma solução.

Achei que pudesse ser o caso, obrigado pelo feedback rápido!

@IanWyszynski vai tentar adicionar uma operação "upsert".

Esta página foi útil?
0 / 5 - 0 avaliações