Javascript 是否可以获取使用batch()创建的文档的生成ID。使用Firestore设置?
是否有一种方法可以为使用Firestore作为批处理的一部分创建的文档获取自动生成的ID 使用Javascript 是否可以获取使用batch()创建的文档的生成ID。使用Firestore设置?,javascript,firebase,google-cloud-firestore,Javascript,Firebase,Google Cloud Firestore,是否有一种方法可以为使用Firestore作为批处理的一部分创建的文档获取自动生成的ID 使用.add()时,我可以轻松获得ID: db.collection('posts') .add({title: 'Hello World'}) .then(function(docRef) { console.log('The auto-generated ID is', docRef.id) postKey = docRef.id }); 使用.batch()我可以添加带有.d
.add()
时,我可以轻松获得ID:
db.collection('posts')
.add({title: 'Hello World'})
.then(function(docRef) {
console.log('The auto-generated ID is', docRef.id)
postKey = docRef.id
});
使用.batch()
我可以添加带有.doc()
和.set()
的文档:
我可以获取添加到投票的文档的自动生成ID吗
更新:
Doug Stevenson是正确的-我可以在
votesRef.ID
访问ID当您在没有任何参数的情况下调用时,它将立即返回具有唯一ID的,而无需向数据库写入任何内容-ID在客户端生成。因此,如果需要该id,只需在该DocumentReference上使用id属性即可。在您编写该文档后,该id将在数据库中可见。我也有类似的问题,我发现firestore的API发生了更改
我收到了一个类似以下代码的错误:
const postsRef = db.collection('posts').doc(postKey);
batch.set(postsRef, {title: 'Hello Again, World'});
我发现必要的更改是采用doc对象的ref
:
const postsRef = db.collection('posts').doc(postKey).ref;
我希望这对你们大家都有帮助 为了在创建文档之前自动生成uid,您可以使用angularFireAuth的createID()函数,如下所示: `
下面是Firestore web文档示例:
var newCityRef=this.afs.collection(“cities”).doc()代码>给我一个错误“预期1个参数,但得到0”。这完全阻止了我继续前进。@FiringBlanks也许angular做了一些与标准javascript api不同的事情?@DougStevenson看起来他们把它作为了一个必需的参数。请参阅此处了解更多信息:@Edric您正在查看Firestore类上的doc()。我指的是CollectionReference上的doc()。可能重复的是。您必须在每个操作上实例化ref
。换句话说,如果要在对象或数组上迭代,则必须在每次迭代时调用doc()
。
const postsRef = db.collection('posts').doc(postKey).ref;
constructor(
private angularFireStore: AngularFirestore,
) {}
const batch = this.angularFireStore.firestore.batch();
const autogenUid = this.angularFireStore.createId();
const collectionReference = this.angularFireStore.collection
('collection_name').doc(autogenUid).ref;
const docData = {first_field:'value', second_field:'value2'};
batch.set(collectionReference, docData);