我想使用 Firebase 批量写入来确保我的所有写入或都没有发生。
但是,我想创建一个文档(doc1)和一个文档(doc2),并且 doc2 应该在 doc1 的子集合中。
我认为 doc1 需要存在,以便它可以有任何子集合(如果我错了,请纠正我)。我仍然可以在一次批量写入中同时进行两次写入吗?
我想使用 Firebase 批量写入来确保我的所有写入或都没有发生。
但是,我想创建一个文档(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 () {
// ...
});
实际上,从技术角度来看,这两个文件是完全独立的。他们只是分享他们的路径的一部分,但没有别的。这样做的一个副作用是,如果您删除一个文档,它的子集合仍然存在。