firebase-tools:
base de fuego: 7.1.1
nodo: v10.16.0
java: 11.0.2
Plataforma:
Mac OS
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
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 "}]
Ambos activadores de la base de datos se agregarían y se enumerarían en el emulador de base de datos
Cada llamada anula la anterior.
@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".