Firebase-tools: El emulador de funciones solo mantiene el último disparador de la base de datos en tiempo real

Creado en 18 jul. 2019  ·  6Comentarios  ·  Fuente: firebase/firebase-tools

[OBLIGATORIO] Información del entorno


firebase-tools:
base de fuego: 7.1.1
nodo: v10.16.0
java: 11.0.2


Plataforma:
Mac OS

[REQUERIDO] Caso de prueba

Aparece en esta línea, firebase-tools / functionsEmulator.ts en dad143c42445056014f6f48cc9dfa13156e3c186 · firebase / firebase-tools · GitHub
, la solicitud para agregar un nuevo activador anula los activadores anteriores agregados en lugar de agregarse a la lista

[OBLIGATORIO] Pasos para reproducir

curl ' http: // localhost : 9000 / .settings / functionTriggers.json? ns = test-project' -X PUT -H 'autorización: Portador propietario' --data-binary '[{"nombre": "proyectos / prueba -proyecto / ubicaciones / _ / funciones / NewPost "," ruta ":" / posts / {ownerId} / {postId} "," event ":" proveedores / google.firebase.database / eventTypes / ref.create "," tema ":" proyectos / proyecto-prueba / temas / NewPost "}] '--compressed
{"status": "ok"}

curl ' http: // localhost : 9000 / .settings / functionTriggers.json? ns = test-project' -H 'autorización: propietario del portador' --compressed
[{"nombre": "proyectos / proyecto-prueba / ubicaciones / _ / funciones / NewPost", "ruta": "/ posts / {ownerId} / {postId}", "event": "proveedores / 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 'autorización: Portador propietario' --data-binary '[{"nombre": "proyectos / prueba -proyecto / ubicaciones / _ / funciones / UpdatePost "," ruta ":" / posts / {ownerId} / {postId} "," event ":" proveedores / google.firebase.database / eventTypes / ref.update "," tema ":" proyectos / proyecto-prueba / temas / UpdatePost "}] '--compressed
{"status": "ok"}

curl ' http: // localhost : 9000 / .settings / functionTriggers.json? ns = test-project' -H 'autorización: propietario del portador' --compressed
[{"nombre": "proyectos / proyecto-prueba / ubicaciones / _ / funciones / UpdatePost", "ruta": "/ posts / {ownerId} / {postId}", "event": "proveedores / google.firebase. database / eventTypes / ref.update "," topic ":" proyectos / proyecto-prueba / temas / UpdatePost "}]

[REQUERIDO] Comportamiento esperado

Ambos activadores de la base de datos se agregarían y se enumerarían en el emulador de base de datos

[REQUERIDO] Comportamiento real

Cada llamada anula la anterior.

emulator-suite database functions bug

Todos 6 comentarios

@gpfunk ¡ gracias por informar de esto! Investigaré esto ahora y veré si puedo reproducirlo.

Confirmado que esto es un error, ahora para encontrar dónde vive.

dios velocidad :)

Ok, esta es una de esas cosas que "funcionan según lo previsto pero sigue siendo un error". Básicamente, el código firebase-tools (como notó) está enviando un PUT a todo el recurso functionTriggers para cada función, que lo reemplaza.

Lo que realmente necesitamos es una operación "upsert" implementada en el emulador RTDB que podamos llamar usando un nombre de disparador como ID único. Esto es lo que tiene Firestore. Hablaremos de ello hoy y, con suerte, obtendremos una solución.

Pensé que ese podría ser el caso, ¡gracias por los comentarios rápidos!

@IanWyszynski va a intentar agregar una operación "upsert".

¿Fue útil esta página
0 / 5 - 0 calificaciones