使用Firestore在Cloud功能中获取/添加文档
问题描述:
当用户购买产品并通过分条付款时,我正在努力融合自动化工作流程。我正在使用Firestore和云端函数。使用Firestore在Cloud功能中获取/添加文档
工作流程
- 通过条纹Checkout.js
-
付款用户购买产品存储在 '支付' 收集
{ product:<uid of the product> '...', user:<uid of the user> '..', method: 'stripe', token:< Stripe token> {..} }
触发器云功能(onWrite对于代收货款)
- TODO:Get product DocRef从“产品”(获取产品的价格)
TODO:为“购买”集合添加文档集合的文档内的“用户”
报酬支付
我实现这个工作流程,除了第4步和第5步外,因为我不知道如何从Firestore中检索和添加DocRef(CloudSense文档提供了很多关于RT数据库如何工作的示例)
个功能/ index.js
exports.stripeCharge = functions.firestore
.document('/payments/{payment}')
.onWrite(event => {
const paymentId = event.params.payment;
const payment = event.data.data();
if (!payment || payment.method !== 'stripe' || payment.charge) return;
// 4. Get Product's Price
firestore.collection('products').doc(payment.product).then(product => {
const idempotency_key = paymentId;
const charge = {
amount: product.price,
currency: 'chf',
source: payment.token.id
};
stripe.charges.create(charge, {idempotency_key}).then(charge => {
// 5. Update User Purchases
firestore.collection('users').doc(payment.user).collection('purchases').add({
product: payment.product,
payment: paymentId,
date: new Date()
});
// Updated Charge
event.data.ref.update({charge});
});
});
联系SDK 我想,我必须使用Admin SDK来实现这一点,但我对这个应该如何与公司的FireStore
工作
答
访问不知道来自Admin SDK的Firestore与从Admin SDK访问任何其他Firebase产品非常相似:例如, admin.firestore()...
见https://firebase.google.com/docs/reference/admin/node/admin.firestore。
你错过了,当你试图访问该文档的get()
电话:
firestore.collection('products').doc(payment.product).get().then(product => {
if (!product.exists) {
console.log('No such product!');
} else {
console.log('Document data:', product.data());
}
如果你还没有从之前的JavaScript使用的FireStore云的功能是不是开始使用的最简单方法它。我建议您阅读docs for JavaScript/web users,并以。
很好,谢谢! 所以我只需要用'admin.firestore()'替换'firestore'并添加'get()'方法 –