art*_*ras 35 google-cloud-firestore
该文件对公司的FireStore批量写入只列出set(),update()并delete()允许的操作.
有没有办法向add()批处理添加操作?我需要使用自动生成的ID创建文档.
Sam*_*ern 79
您可以分两步完成此操作:
// Create a ref with auto-generated ID
var newCityRef = db.collection('cities').doc();
// ...
// Add it in the batch
batch.set(newCityRef, { name: 'New York City' });
Run Code Online (Sandbox Code Playgroud)
该.doc()方法不会向网络或磁盘写入任何内容,它只是使用您可以在以后使用的自动生成的ID进行引用.
Mic*_*sky 11
我将为 Firebase 9 提供一个答案,其中语法与 Firebase 8 不同。
对于 Firebase 9,相当于add()https://firebase.google.com/docs/firestore/manage-data/add-data#web-version-9_6中addDoc()的解释。它适用于当您不使用批处理或事务时。根据发布的原始问题, Firebase 9 上也没有等效的批处理或事务。addDoc()
我找到了一种方法,可以通过遵循答案/sf/answers/4890140111/addDoc()来实现与 Firebase 9 上的批处理等效的效果,如下所示:
const batch = writeBatch(db);
const docADocRef = doc(collection(db, "DocA"));
batch.set(docADocRef, {
fieldA: "This is field of an instance of DocA"
});
const docBDocRef = doc(collection(db, "DocB"));
batch.set(docBDocRef, {
docAID: docADocRef.id
});
batch.commit();
Run Code Online (Sandbox Code Playgroud)
在此示例中,创建了 DocA 和 DocB 的实例,并且 DocB 接收指向 DocA 实例的指针。
小智 5
就我而言,使用 AngularFire2,我必须使用 batch.set() 方法,将具有先前创建的 ID 的文档引用和引用属性作为第一个参数传递:
import { AngularFirestore } from '@angular/fire/firestore';
...
private afs: AngularFirestore
...
batch.set(
this.afs.collection('estados').doc(this.afs.createId()).ref,
er.getData()
);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8673 次 |
| 最近记录: |