我已经开始使用JavaScript / Firestore了几天,但是我在数组中使用laguage的行为面临一些问题。我无法在函数内使用for循环来运行数组,并且几乎所有时间都无法返回未定义状态。这是我的代码:
这是将会议处于活跃状态的Firestore上的所有ID取回的代码:
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 数组上运行所有id并在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控制台结果:
Console.log(数据):
[__ob__: Observer]
0: "QEq1VexdC28BbWRvSFL7"
1: "vFsSdDeHJqJQU13dwMwQ"
length: 2
__ob__: Observer {value: Array(2), dep: Dep, vmCount: 0}
__proto__: Array
Console.log(数据[0]):
undefined
Console.log(data [1])
vFsSdDeHJqJQU13dwMwQ
答案 0 :(得分:0)
找到了答案。我是在vue环境中完成此功能的,因为该变量在表下运行观察者标准。我只需要创建一个内部var并在其中运行其他函数即可:
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)
})
},
谢谢您的帮助!