Javascript Firestore batch.commit()不';t第一次向服务器发送数据';这叫什么

Javascript Firestore batch.commit()不';t第一次向服务器发送数据';这叫什么,javascript,firebase,google-cloud-firestore,Javascript,Firebase,Google Cloud Firestore,我有一个React web应用程序,我正在尝试批量上传到Firestore。我有一个上传按钮,触发下面的功能。第一次单击该按钮时,我看到日志中的第一条消息,但仅此而已—batch.commit()返回的承诺既没有被解析也没有被拒绝,因此其他控制台消息都不会出现。“网络”选项卡中没有任何内容 当我第二次单击上载按钮时,数据将上载,并且控制台中将显示完成消息。发生什么事了 const onUploadClick = () => { const db = firebase.firestore

我有一个React web应用程序,我正在尝试批量上传到Firestore。我有一个上传按钮,触发下面的功能。第一次单击该按钮时,我看到日志中的第一条消息,但仅此而已—batch.commit()返回的承诺既没有被解析也没有被拒绝,因此其他控制台消息都不会出现。“网络”选项卡中没有任何内容

当我第二次单击上载按钮时,数据将上载,并且控制台中将显示完成消息。发生什么事了

const onUploadClick = () => {
  const db = firebase.firestore()
  const batch = db.batch()

  const nycRef = db.collection('activities').doc('NYC')
  batch.set(nycRef, { name: 'New York City' })

  console.log('The batch is set to go.')

  batch
    .commit()
    .then(function() {
      console.log('Done.')
    })
    .catch(err => console.log(`There was an error: ${err}`))
}

我将
const db=firebase.firestore()
移动到另一个地方,在应用程序启动时执行,而不是在上传之前执行。我在文档中没有看到任何说明需要这样做的内容,因此我打开了一个。

我将const db=firebase.firestore()移动到另一个位置,在应用程序启动时执行,而不是在上传之前执行。我在文档中没有看到任何说明必须这样做的内容,所以我打开了一个。

你是说
firebase.firestore()
似乎是惰性的,并且是异步初始化的吗?这不应该发生。无论在哪里调用
firebase.firestore()
。即使是
const nycRef=firebase.firestore().collection('activities').doc('NYC')
也应该可以正常工作。@FrankvanPuffelen是的,应该可以!你是说
firebase.firestore()
似乎是惰性的,并且是异步初始化的?这不应该发生。无论在哪里调用
firebase.firestore()
。即使是
const nycRef=firebase.firestore().collection('activities').doc('NYC')
也应该可以正常工作。@FrankvanPuffelen是的,应该可以!