Firstore一次创建多个文档

时间:2018-02-27 15:21:03

标签: javascript node.js google-cloud-firestore

我已经提供了一系列文档 id ,我想将其添加到Firestore。

$search->tranid = $needle;

每个文档都应该有一组预定义的属性。

$search->tranId = $needle;

Firebase Admin SDK中是否有一些功能可以一次创建所有文档,而无需遍历documentIds数组?

2 个答案:

答案 0 :(得分:1)

您可以进行批量写入。您仍然需要遍历文档以将它们全部添加到批处理对象中,但它将是单个网络调用:

示例:

// Get a new write batch
var batch = db.batch();

// Set the value of 'NYC'
var nycRef = db.collection("cities").doc("NYC");
batch.set(nycRef, {name: "New York City"});

// Update the population of 'SF'
var sfRef = db.collection("cities").doc("SF");
batch.update(sfRef, {"population": 1000000});

// Delete the city 'LA'
var laRef = db.collection("cities").doc("LA");
batch.delete(laRef);

// Commit the batch
batch.commit().then(function () {
    // ...
});

https://firebase.google.com/docs/firestore/manage-data/transactions#batched-writes

答案 1 :(得分:0)

这应该有所帮助。 Sam的回答将帮助您更好地理解如何使用批量写入。请务必查看他链接到的文档。

我不想让Sam心烦意乱。他昨天修理了我的笔记本电脑: - )

使用数组

设置批处理
let documentIds = [
  'San Francisco',
  'New York',
  'Las Vegas'
]

let data = {country: 'US', language: 'English'}

var batch = db.batch();
var setBatch = documentIds.forEach(docId => {
  batch.set(db.doc(`cities/${docId}`), data);
})

batch.commit().then(response => {
  console.log('Success');
}).catch(err => {
  console.error(err);
})