2017-10-15 42 views
3

有沒有一種方法可以使用Firestore獲取作爲批處理一部分創建的文檔的自動生成ID?可以使用Firestore設置使用batch()創建的文檔的生成ID嗎?

當使用.add()我可以輕鬆地獲得一個ID:

const batch = db.batch(); 

const postsRef = db.collection('posts').doc(postKey); 
batch.set(postsRef, {title: 'Hello Again, World'}); 

const votesRef = db.collection('posts').doc(postKey) 
        .collection('votes').doc(); 
batch.set(votesRef, {upvote: true}) 

batch.commit().then(function() { 
}); 

我能得到的自動生成的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()添加文檔文件被添加到votes

更新:

道格·史蒂文森是正確的 - 我可以在votesRef.id

回答

5

訪問ID當調用doc()不帶任何參數,它會立即返回一個DocumentReference具有唯一的ID,無需編寫數據庫中的任何東西 - id在客戶端上生成。所以如果你想要這個id,只需使用該DocumentReference上的id屬性即可。在編寫該文檔後,該ID將在數據庫中可見。

+1

我正在關注Firestore網絡文檔示例:var newCityRef = this.afs.collection(「cities」).doc();'給我一個錯誤「期望的1個參數,但得到了0」。這完全阻止我前進。 – FiringBlanks

+0

@FiringBlanks也許角度做一些不同於標準的JavaScript API? –

+0

@DougStevenson看起來他們把它變成了必需的參數。在這裏看到更多的信息:https://github.com/firebase/firebase-js-sdk/blob/d43d461aaa2496d4cd12fd593373f6dad214716f/packages/firestore/src/api/database.ts#L397-L408 – Edric

相關問題