javascript - Firebase 功能不是实时的

标签 javascript firebase firebase-realtime-database vue.js vuejs2

我在 VueJS 方法中设置了 firebase 查询

data: {this.todaysEvents}, 
methods : {
    getTodaysEvents (day) {
      this.todaysEvents = []
      const events = db.ref('calendar')
      const query = events.orderByChild('day').equalTo(day)
      console.log(query)

      query.on('value', snap => {
        this.todaysEvents.push(snap.val())
        console.log(this.todaysEvents)
      })
    }

然后通过v-for循环使用它:

<ul class="events-header-list">
    <li :key="index" v-for="(event, index) in todaysEvents[0]" class="chip">{{event}}</li>
</ul>

当我更新事件时出现问题。数据不实时同步。需要做什么才能使其实时?

编辑:这是todaysEvents返回的数据:

[
  {
    "Same Event": {
      "calendar": "Sports",
      "color": "orange",
      "date": "2017-05-22",
      "day": 23,
      "desc": "test description",
      "name": "test"
    },
    "some key": {
      "day": 23,
      "month": 6,
      "name": "cooler event"
    }
  }
]

最佳答案

经过一些工作,这归结为更新回调管理从 Firebase 返回的值的方式。

new Vue({
    el: '#app',
    data: {
    todaysEvents: [],
  },
  firebase: {
        test: db.ref('calendar')
    },
  methods : {
    getTodaysEvents () {
      const events = db.ref('calendar')
      const query = events.orderByChild('day').equalTo(23)

      query.on('value', snap => {
        let events = snap.val()
        let newEvents = []
        for (let key of Object.keys(events))
          newEvents.push(Object.assign({}, events[key], {key}))
        this.todaysEvents = newEvents
      })
    }
  },
  mounted(){
    setTimeout(() =>
      this.getTodaysEvents(), 500)
  }
})

关于javascript - Firebase 功能不是实时的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44728786/

相关文章:

javascript - Firebase 用户 displayName 为空

ios - TableView 重复项和 firebase 搜索查询

javascript - 如何在html5中维护登录 session

Javascript substr 问题

javascript - 问题迭代模板中的 Ember.js 对象

javascript - 在创建时设置 Canvas 宽度/高度

javascript - 如何将匿名帐户转换为永久帐户

javascript - 通过不等式查询firestore

android - Android 上的 ListView 中未显示 Firebase 数据

android - Flutter - 如何在 Firebase 中写入数据(实时 ddb): permission denied