在编写Cloud Function时,我试图访问集合Email
中的cards
字段。在Firebase
中,我创建了一个新用户并从该用户登录,并使用FirebaseAuth.instance.currentUser()
将该用户的电子邮件地址保存到Firebase数据库中,并创建了文档名称.document(user.uid)
,现在我正在访问此用户ID。这段代码中的node.js
const snapshot=await firestore.collection('cards').doc(context.params.userId).get();
const customerEmailaddress= snapshot.data().Email;
但是我无法使用该代码访问该电子邮件。 颤动的应用程序代码是将数据保存到Firebase数据库中的
class PaymentServices{
addCard(token){
FirebaseAuth.instance.currentUser().then((user){
Firestore.instance
.collection('cards')
.document(user.uid)
.collection('tokens').add({
'tokenid': token.tokenId,
'Email': user.email,
'customerid': 'new'
}).then((val){
});
print("saveedd");
});
}
}
云功能 数据已成功插入Firebase中,我只想从Firebase中访问数据并将值存储在诸如customerEmailaddress之类的变量中
const functions = require('firebase-functions');
const admin = require('firebase-admin');
admin.initializeApp(functions.config().firebase);
const firestore= admin.firestore();
const stripe = require('stripe')('sk_test_.........');
exports.StripeSource =functions.firestore.document('cards/{userid}/tokens/{tokenid}').onCreate(async (tokenSnap,context) => {
var customerdata;
const data=tokenSnap.after.data();
const snapshot=await firestore.collection('cards').doc(context.params.userId).get();
const customerEmailaddress= snapshot.data().Email;
const customerid= snapshot.data().custid;
customerdata = await stripe.customers.create({
email: customerEmailaddress,
})
});
简单示例 user.id的情况可能有问题,但是此代码也无法从快照变量的Firebase中获取数据
exports.StripeSource =functions.firestore.document('data/{card}/tokens/{tokenid}').onCreate(async (tokenSnap,context) => {
const snapshot = await firestore.collection('data').doc('card').get();
const customerEmailaddress= snapshot.data().Email;
const customer = stripe.customers.create({
email: customerEmailaddress,
})
.then((customer) => {
return stripe.customers.createSource(customer.id, {
source: 'tok_visa',
});
})
});
答案 0 :(得分:1)
您确定要阅读的文档是否存在于所需ID下的“卡片”中?在Firebase控制台上进行检查。
因为我认为您的保存数据代码中有一个错误:add()
直接用于集合,所以您插入具有随机生成ID的文档。但是您具有ID,因此应在特定文档上使用setData()
。
插入具有随机ID的新文档:
Firestore.instance.collection('cards').add({'Email': user.email});
插入具有已知ID(user.uid)的新文档:
Firestore.instance.collection('cards').document(user.uid).setData({'Email': user.email});