Javascript Firebase未使用.doc上载到firestore
我正在尝试使用firebase和stripe在我的网站上根据以下源代码设置付款: 我尝试重新设置firestore和实时数据库的规则,但我一直坚持使用.snapshot。我已经查看了调试器,currentUser.uid不是null,但它没有在数据库中创建新条目。在此方面的任何帮助都将不胜感激!第一次使用firebase,所以我有点迷路了。目前,我的规则文件与github repo中链接的规则文件相同Javascript Firebase未使用.doc上载到firestore,javascript,html,database,firebase,google-cloud-firestore,Javascript,Html,Database,Firebase,Google Cloud Firestore,我正在尝试使用firebase和stripe在我的网站上根据以下源代码设置付款: 我尝试重新设置firestore和实时数据库的规则,但我一直坚持使用.snapshot。我已经查看了调试器,currentUser.uid不是null,但它没有在数据库中创建新条目。在此方面的任何帮助都将不胜感激!第一次使用firebase,所以我有点迷路了。目前,我的规则文件与github repo中链接的规则文件相同 firebase.auth().onAuthStateChanged((firebaseUse
firebase.auth().onAuthStateChanged((firebaseUser) => {
if (firebaseUser) {
currentUser = firebaseUser;
firebase
.firestore()
.collection('stripe_customers')
.doc(currentUser.uid)
.onSnapshot((snapshot) => {
if (snapshot.data()) {
customerData = snapshot.data();
startDataListeners();
document.getElementById('loader').style.display = 'none';
document.getElementById('content').style.display = 'block';
} else {
console.warn(
`No Stripe customer found in Firestore for user: ${currentUser.uid}`
);
}
});
} else {
document.getElementById('content').style.display = 'none';
firebaseUI.start('#firebaseui-auth-container', firebaseUiConfig);
}
});
您显示的代码中绝对没有任何内容尝试创建文档-.doc()只创建对现有文档的引用 .onSnapshot为现有文档的首次读取和后续更改建立侦听器;我不会花时间在GitHub上搜索“startDataListeners()”(即使我知道具体的存储库)
如果您希望这段代码片段创建一个文档,我建议您花更多的时间来理解这段代码到底在做什么。我强烈怀疑您正在使用的代码示例期望用户文档已经存在(即,您的应用程序创建了它们),并且只是尝试将您的现有用户连接到条带事务您的代码片段实际上没有创建任何文档,它只是尝试读取现有文档 现在,您可以做的是检查文档是否确实存在,我假设
if (snapshot.data())
部分检查(应该有snapshot.exists属性或方法)
但是,如果它不存在,则必须在firestore数据库中创建该文档
firebase
.firestore()
.collection('stripe_customers')
.doc(currentUser.uid)
.create(YOUR_DATA_OBJECT)
这将使用您在请求中提供的uid创建文档。如果文档已经存在,即您的检查无效,它将抛出一个错误,因为firestore文档无法创建两次。