如何在Firebase中的集合中添加多个文档?

时间:2019-01-23 07:37:49

标签: reactjs firebase react-native

我正在使用React native和react-native-firebase

我的目标是一次将多个文档(对象)添加到集合中。 目前,我有这个:

const array = [
  {
     name: 'a'
  },{
    name: 'b'
  }
]
array.forEach((doc) => {
  firebase.firestore().collection('col').add(doc);
}

这会触发其他设备上对该集合所做的每次更新。 如何将这些文档一起批处理以进行一次更新?

3 个答案:

答案 0 :(得分:1)

您可以像这样创建批写

var db = firebase.firestore();
var batch = db.batch()

在数组中添加更新

array.forEach((doc) => {
  var docRef = db.collection("col").doc(); //automatically generate unique id
  batch.set(docRef, doc);
});

最后您必须确认

batch.commit()

答案 1 :(得分:0)

您可以作为一个批处理执行多个写操作,其中包含set(),update()或delete()操作的任意组合。一批写操作是原子完成的,可以写到多个文档。

var db = firebase.firestore();
var batch = db.batch();

array.forEach((doc) => {

  batch.set(db.collection('col').doc(), doc);
}
// Commit the batch
batch.commit().then(function () {
    // ...
});

答案 2 :(得分:0)

数据库中的批处理还具有创建功能,该功能可以在集合中添加新文档,如果已有文档,则会引发错误。我们只需要参考文件即可。请注意,此功能存在于firebase的admin sdk中。

const batch = db.batch();
await users.map(async (item)=> {
    const collectionRef = await db.collection(COLLECTION_NAME).doc();
    batch.create(collectionRef, item);
  });

const result = await batch.commit();