Здравствуйте!
Не совсем уверен, как решить следующую проблему, а именно - как получить автоматически-сгенерированный ID документа, при прослушивании коллекции? То есть, имеется следующий код:
created() {
// Get current user and get info from db
let currentUser = firebase.auth().currentUser
this.$store.dispatch('setUserId', currentUser.uid)
let ref = db.collection('categories').where('user_id', '==', currentUser.uid).orderBy('category_name')
ref.onSnapshot(snapshot => {
// snapshot.forEach(doc => {
// тут у нас есть doc.id
// return this.$store.commit('addCategory', {category_name: doc.data().category_name, user_id: doc.data().user_id})
// })
snapshot.docChanges().forEach(change => {
if (change.type == 'added') {
// тут какой-либо doc.id или change.id у нас нет
let doc = change.doc
return this.$store.commit('addCategory', {category_name: doc.data().category_name, user_id: doc.data().user_id})
}
})
})
}
Суть в том, что я отслеживаю документы в коллекции и при появлении нового- добавляю его в vuex store. Проблема в том, что используя
snapshot.docChanges() я не могу добраться до ID документа. Свой создавать не очень хотелось бы, ибо зачем, если он итак там есть.
Если мы просто используем
snapshot.forEach, то у нас есть параметр для документов id. То есть ID документа можем получить через
doc.id. Для docChanges() такого нет. В параметрах до ID докопаться можно, но запись тогда имеет вид
"changes.doc._document.key.path.segments[6]", что выглядит не очень здорово.
Id хочу получить для того, чтобы в дальнейшем делать более правильные запросы в БД, для удаления/редактирования записей. Можно обойтись и без него, но хотелось бы разобраться, как таки его правильно достать.
Спасибо большое за ответ!