Con respecto a la extensión de franjas para firebase: https://firebase.google.com/products/ extensiones / firestore-stripe-invoices Todavía no he encontrado nada relacionado en la documentación, y el código fuente no me reveló mucho (al menos a mi entender).

En la configuración de la extensión solicita un cobro para escuchar facturas. ¿Es posible utilizar un grupo de colección en su lugar? Entonces, en lugar de escuchar las facturas en invoices, quiero que escuche en users/{uid}/invoices

2
Tako 3 mar. 2021 a las 11:52

1 respuesta

La mejor respuesta

Desde código de extensión,

let invoicesInFirestore = await admin
  .firestore()
  .collection(config.invoicesCollectionPath)
  .where('stripeInvoiceId', '==', invoice.id)
  .get();

Parece que, en el momento de redactar este documento, no está previsto gestionar subcolecciones múltiples.

Puedo ver dos soluciones:

1. Adapte el código de extensión para crear sus propias funciones en la nube

Copia el código de extensión y lo modifica de tal manera que maneja múltiples subcolecciones, para crear sus propias Cloud Functions.

Tenga en cuenta que el código de extensión declara la función de nube con export const sendInvoice = functions.handler.firestore.document.onCreate(...). Como se explica en el doc "La clase HandlerBuilder facilita la escritura de funciones por los desarrolladores que compilan Firebase Extensions ... No utilice HandlerBuilder al escribir funciones normales para la implementación a través de Firebase CLI ".

Así que debes adaptarlo de la siguiente manera:

export const sendInvoice = functions.firestore
    .document('users/{uid}/invoices')
    .onCreate((snap, context) => {...}

Sin embargo, tenga en cuenta que al escribir su propia función en la nube, perderá posibles mejoras futuras a la extensión.

2. Cree una función en la nube que copie / pegue las facturas de las subcolecciones

La idea es tener una función en la nube que escuche todas las subcolecciones users/{uid}/invoices (ver arriba) que copia el nuevo documento y crea una copia en la colección de extensiones "central". Nada le impide agregar algunos campos adicionales en el documento copiado, como el uid del usuario.

Tenga en cuenta que, si desea obtener los comentarios de Stripe, es posible que necesite otra Cloud Function (que escucha la colección de extensiones "central") para copiar / pegar los resultados de las llamadas del webhook de Stripe a los documentos originales en {{X0 }} subcolección.

Personalmente, optaría por este segundo enfoque.

3
Renaud Tarnec 3 mar. 2021 a las 16:47