Firestore使用循环批量写入

时间:2020-05-27 14:26:08

标签: javascript google-cloud-firestore

我想使用for循环写入批处理日期数据,但是控制台没有另外说明,但是它没有用。我认为它仅在Firebase控制台中针对最后一次迭代进行了更新。我已经尝试了2天了,不知道什么了!

const handleSubmit = e => {
e.preventDefault()
const stdRoom = firebase.firestore().collection("stdRoom").doc()
let i;
let momentDate = moment("June 7 2020").startOf("day")._d

for ( i=0 ; i<10 ; i++){
  stdRoom.set({avail: 7, date: momentDate })
  .then(function() {
    console.log("Document successfully written!");
  })
  .catch(function(error) {
    console.error("Error writing document: ", error);
  });

  momentDate = moment(momentDate).add(1,"d").startOf("day")._d
  console.log(momentDate)
}

我尝试过batch()并在退出循环后提交,但无济于事。我正在使用momentjs进行日期处理。如果我一一做,那就行了。

这是旅馆房间。我想在这种情况下将标准房的可用性设置为10天,每天(可能为365天)设置为7。有什么解决办法吗?预先感谢。enter image description here

1 个答案:

答案 0 :(得分:3)

您正在写入同一文档:

const stdRoom = firebase.firestore().collection("stdRoom").doc()

在for循环中:

for ( i=0 ; i<10 ; i++)
  stdRoom.set({avail: 7, date: momentDate })

Firestore将文档写入速度限制为每秒1次,而此for循环将违反该限制。请参阅写入和交易here