Javascript Firebase未使用.doc上载到firestore

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和stripe在我的网站上根据以下源代码设置付款: 我尝试重新设置firestore和实时数据库的规则,但我一直坚持使用.snapshot。我已经查看了调试器,currentUser.uid不是null,但它没有在数据库中创建新条目。在此方面的任何帮助都将不胜感激!第一次使用firebase,所以我有点迷路了。目前,我的规则文件与github repo中链接的规则文件相同

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文档无法创建两次。