Stripe firebase 扩展,在收款组收听发票收款
Stripe firebase extension, listen to invoices collection in collection group
关于 Firebase 的条带扩展:https://firebase.google.com/products/extensions/firestore-stripe-invoices
我还没有在文档中找到任何相关内容,源代码也没有向我透露太多信息(至少在我看来是这样)。
在扩展的配置中,它要求一个集合来侦听发票。是否可以改用集合组?因此,我不想在 invoices
收听发票,而是希望它在 users/{uid}/invoices
收听
let invoicesInFirestore = await admin
.firestore()
.collection(config.invoicesCollectionPath)
.where('stripeInvoiceId', '==', invoice.id)
.get();
在撰写本文时,似乎没有预见到处理多个子集合。
我可以看到两个解决方案:
1。调整扩展代码以创建您自己的 Cloud Functions
您复制扩展代码并以处理多个子集合的方式对其进行修改,以便创建您自己的 Cloud Functions。
请注意,扩展代码使用 export const sendInvoice = functions.handler.firestore.document.onCreate(...)
声明了 Cloud Function。正如 doc 中所解释的那样,“HandlerBuilder
class 有助于构建 Firebase Extensions 的开发人员编写函数 ... 不要使用 HandlerBuilder
通过 Firebase CLI 编写用于部署的正常函数时。"
所以你应该按如下方式调整它:
export const sendInvoice = functions.firestore
.document('users/{uid}/invoices')
.onCreate((snap, context) => {...}
但是,请注意,通过编写您自己的 Cloud Function,您将失去对扩展的潜在未来改进。
2。创建一个 Cloud Functions copies/pastes 来自子集合的发票
想法是让 Cloud Function 监听所有 users/{uid}/invoices
子集合(见上文),复制新文档并在“中央”扩展集合中创建一个副本。没有什么能阻止您在复制的文档中添加一些额外的字段,例如用户的 uid。
请注意,如果您想从 Stripe 获得反馈,您可能需要另一个 Cloud Function(侦听“中央”扩展集合)来 copy/paste Stripe webhook 调用的结果users/{uid}/invoices
子集合中的原始文档。
就我个人而言,我会选择第二种方法。
关于 Firebase 的条带扩展:https://firebase.google.com/products/extensions/firestore-stripe-invoices 我还没有在文档中找到任何相关内容,源代码也没有向我透露太多信息(至少在我看来是这样)。
在扩展的配置中,它要求一个集合来侦听发票。是否可以改用集合组?因此,我不想在 invoices
收听发票,而是希望它在 users/{uid}/invoices
let invoicesInFirestore = await admin
.firestore()
.collection(config.invoicesCollectionPath)
.where('stripeInvoiceId', '==', invoice.id)
.get();
在撰写本文时,似乎没有预见到处理多个子集合。
我可以看到两个解决方案:
1。调整扩展代码以创建您自己的 Cloud Functions
您复制扩展代码并以处理多个子集合的方式对其进行修改,以便创建您自己的 Cloud Functions。
请注意,扩展代码使用 export const sendInvoice = functions.handler.firestore.document.onCreate(...)
声明了 Cloud Function。正如 doc 中所解释的那样,“HandlerBuilder
class 有助于构建 Firebase Extensions 的开发人员编写函数 ... 不要使用 HandlerBuilder
通过 Firebase CLI 编写用于部署的正常函数时。"
所以你应该按如下方式调整它:
export const sendInvoice = functions.firestore
.document('users/{uid}/invoices')
.onCreate((snap, context) => {...}
但是,请注意,通过编写您自己的 Cloud Function,您将失去对扩展的潜在未来改进。
2。创建一个 Cloud Functions copies/pastes 来自子集合的发票
想法是让 Cloud Function 监听所有 users/{uid}/invoices
子集合(见上文),复制新文档并在“中央”扩展集合中创建一个副本。没有什么能阻止您在复制的文档中添加一些额外的字段,例如用户的 uid。
请注意,如果您想从 Stripe 获得反馈,您可能需要另一个 Cloud Function(侦听“中央”扩展集合)来 copy/paste Stripe webhook 调用的结果users/{uid}/invoices
子集合中的原始文档。
就我个人而言,我会选择第二种方法。