Firebase 批量写入:一个写入依赖于另一个之前的写入
Firebase Batched Write: one write depends on another previous one
我想使用 Firebase 批量写入来确保我的所有写入或 none 写入都在进行。
但是,我想创建一个文档 (doc1) 和一个文档 (doc2),并且 doc2 应该在 doc1 的子集合中。
我认为 doc1 需要存在以便它可以有任何子集合(如果我错了,请纠正我)。我还能在一次批量写入中完成这两项写入吗?
是的,一旦知道了两个文件的引用,就可以很好的批量写入,如下(JavaScript SDK):
const db = firebase.firestore();
// Get a new write batch
let batch = db.batch();
// Set the value of 'Doc1'
const doc1Ref = db.collection("col").doc("1");
batch.set(doc1Ref, { foo: "bar" });
// Set the value of 'Doc2'
const doc2Ref = db.collection("col").doc("1").collection("subcol").doc("2");
batch.set(doc2Ref, { bar: "foo" });
// Commit the batch
batch.commit().then(function () {
// ...
});
其实从技术角度来说,这两个文件是完全独立的。他们只是共享他们路径的一部分,除此之外别无其他。这样做的一个副作用是,如果您删除一个文档,它的 sub-collection(s) 仍然存在。
reference 表示批处理中的写入在本地不可见(即对批处理中的其他写入不可见)。在您的示例中,当您编写 /collection/doc1/subcollection/doc2 时,doc1 尚不存在...
但是,事实证明,如果 doc1 不存在,您可以写入 /collection/doc1/subcollection/doc2 事件,它将在您的控制台中 shown in italics。
所以最后:是的,你可以在一个批次中完成你的两个写入。 Doc2 将在一个不存在的 doc1 中,但只是在提交期间暂时,一旦提交完成,一切就OK了。
我想使用 Firebase 批量写入来确保我的所有写入或 none 写入都在进行。
但是,我想创建一个文档 (doc1) 和一个文档 (doc2),并且 doc2 应该在 doc1 的子集合中。
我认为 doc1 需要存在以便它可以有任何子集合(如果我错了,请纠正我)。我还能在一次批量写入中完成这两项写入吗?
是的,一旦知道了两个文件的引用,就可以很好的批量写入,如下(JavaScript SDK):
const db = firebase.firestore();
// Get a new write batch
let batch = db.batch();
// Set the value of 'Doc1'
const doc1Ref = db.collection("col").doc("1");
batch.set(doc1Ref, { foo: "bar" });
// Set the value of 'Doc2'
const doc2Ref = db.collection("col").doc("1").collection("subcol").doc("2");
batch.set(doc2Ref, { bar: "foo" });
// Commit the batch
batch.commit().then(function () {
// ...
});
其实从技术角度来说,这两个文件是完全独立的。他们只是共享他们路径的一部分,除此之外别无其他。这样做的一个副作用是,如果您删除一个文档,它的 sub-collection(s) 仍然存在。
reference 表示批处理中的写入在本地不可见(即对批处理中的其他写入不可见)。在您的示例中,当您编写 /collection/doc1/subcollection/doc2 时,doc1 尚不存在...
但是,事实证明,如果 doc1 不存在,您可以写入 /collection/doc1/subcollection/doc2 事件,它将在您的控制台中 shown in italics。
所以最后:是的,你可以在一个批次中完成你的两个写入。 Doc2 将在一个不存在的 doc1 中,但只是在提交期间暂时,一旦提交完成,一切就OK了。