我有一个使用Firebase的小页面VueJS应用程序。我目前面临的问题是当我尝试从组件中的Firebase中检索集合时。 vue实例不是返回一个数组,而是返回一个观察者对象,更准确地说是[__ob__: Observer]
。我明白,Vue JS使用这个对象来实现它的魔力,我不明白的是我该怎么做才能得到真正的数组。我无法对该对象做任何事情,无法迭代它。我尝试过任何生命周期方法来尝试做,但没有运气。更令人沮丧的是,当我关闭并再次打开Chrome控制台(F12)时,方法再次被调用,对象实际上被解析到数组中。我最初认为数据可能还没有被检索,但数据存在于对象本身中,我无法访问它。VueJS:观察者对象而不是阵列
这里是我的代码:
Vue的实例:
new Vue({
el: '#app',
firebase: {
orders: firebase.database.ref('orders').orderByChild('created_at'),
members: firebase.database.ref('members').orderByChild('created_at')
},
router,
template: '<App/>',
components: { App }
})
组件代码:
export default {
data() {
return {
'member': null
}
},
computed: {
isMemberLoaded: function() {
this.member !== null
}
},
mounted: function() {
console.log('mounted')
this.init()
console.log(this.$root.members) // [__ob__: Observer]
},
created: function() {
console.log('created')
console.log(this.$root.members) // [__ob__: Observer]
},
updated: function() {
console.log('updated')
console.log(this.$root.members) // [__ob__: Observer]
},
methods: {
init: function() {
console.log('init')
console.log(this.$root.members) // [__ob__: Observer]
}
}
}
观察员物体看起来是这样的:
[__ob__: Observer]
0:
.key:(...)
code:(...)
created_at:(...)
email:(...)
name:(...)
__ob__:Observer {value: {…}, dep: Dep, vmCount: 0}
get .key: ƒ reactiveGetter()
set .key: ƒ reactiveSetter(newVal)
get code: ƒ reactiveGetter()
set code: ƒ reactiveSetter(newVal)
get created_at: ƒ reactiveGetter()
set created_at: ƒ reactiveSetter(newVal)
get email: ƒ reactiveGetter()
set email: ƒ reactiveSetter(newVal)
get name: ƒ reactiveGetter()
set name: ƒ reactiveSetter(newVal)
__proto__: Object
length: 1
__ob__: Observer {value: Array(1), dep: Dep, vmCount: 0}
__proto__: Array
我在想什么这里?
观察者对象是否为空? –
@GeorgiAntonov,不,数据在那里。 – Comforse
那么是什么问题?访问在观察对象中的数组 –