Каково это поведение массива JavaScript? - PullRequest
0 голосов
/ 23 октября 2019

Я начал работать с JavaScript / Firestore в течение нескольких дней, но у меня возникли некоторые проблемы с поведением языка в массивах. Я не могу запустить массив с циклом for внутри функции, и почти все время он возвращает мне неопределенное значение. это мой код:

Это код, который принимает все идентификаторы в пожарном депо, чья встреча активная :

   function validation () {

      let path = firebase.firestore()
      path
        .collection('database')
        .doc('405')
        .collection('meetings')
        .where('active', '==', true)
        .get().then( snapshot =>{
        snapshot.docs.forEach( snapshot => {        
        this.id_firestore.push(snapshot.id)
        })

      }) 

    },

И это код, который запускаетвсе идентификаторы в массиве id_firestore и берет на себя все сомнения о встрече в firestore:

    function search_doubts (){
      let data = this.id_firestore  // in this line data.value = ["QEq1VexdC28BbWRvSFL7","vFsSdDeHJqJQU13dwMwQ"]
      let path = firebase.firestore().collection('database').doc('405').collection('meeting')

      console.log(data)    //  here it logs me all the array normally
      console.log(data[0]) // here the log returns me undefined

      for (let i = 0; i<data.lenght; i++) {        
        path.doc(data[i]).collection('doubts').get().then( snapshot =>{
          snapshot.docs.forEach( snapshot => {        
            this.doubts.push(snapshot.data().txt_doubts)
            this.id_firestore_doubts.push(snapshot.id)        
          })
          console.log(data[1]) //here it logs me the data normally
        })         
      }
    }

Я сделал слишком много поисков, но ничего не нашел об этом поведении, может кто-нибудьответ, почему функция ведет себя так? Это результаты консоли chrome на моем debbug:

Console.log (data):

[__ob__: Observer]
0: "QEq1VexdC28BbWRvSFL7"
1: "vFsSdDeHJqJQU13dwMwQ"
length: 2
__ob__: Observer {value: Array(2), dep: Dep, vmCount: 0}
__proto__: Array

Console.log (data [0]):

undefined

Console.log (data [1])

vFsSdDeHJqJQU13dwMwQ

1 Ответ

0 голосов
/ 23 октября 2019

Нашел ответ. Я сделал эту функцию в vue среде и потому и под таблицей переменная запускает стандарты наблюдателя. Мне просто нужно сделать внутреннюю переменную и запустить другую функцию внутри нее:

   function validation () {
      let id_firestore = []
      let path = firebase.firestore()
      path
        .collection('database')
        .doc('405')
        .collection('meetings')
        .where('active', '==', true)
        .get().then( snapshot =>{
        snapshot.docs.forEach( snapshot => {        
        this.id_firestore.push(snapshot.id)
        })
       this.search_doubts (id_firestore)
      }) 

    },

Спасибо за помощь!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...