Figment
@Figment

Firestore: как получить ID документа при прослушивании коллекции?

Здравствуйте!
Не совсем уверен, как решить следующую проблему, а именно - как получить автоматически-сгенерированный 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 хочу получить для того, чтобы в дальнейшем делать более правильные запросы в БД, для удаления/редактирования записей. Можно обойтись и без него, но хотелось бы разобраться, как таки его правильно достать.

Спасибо большое за ответ!
  • Вопрос задан
  • 797 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы