从Firebase存储和检索数据以不同的格式返回

时间:2018-09-01 16:23:35

标签: javascript firebase vue.js firebase-realtime-database firebase-authentication

我正在尝试构建此timetracker应用,用户可以在其中记录每天工作了多少小时。为了让您了解我的应用程序的外观,我整理了一个小提琴:https://jsfiddle.net/9vhfmjpy/

这是棘手的部分。每当我尝试通过执行以下操作将数据存储到Firebase中的节点中时:

submitHours() {
  var uid = firebase.auth().currentUser.uid;      
  firebase
    .database()
    .ref("userhours/" + uid)
    .set(this.rows)
    .then(data => {
      console.log(data);
    });
},

它将变成具有索引值的对象,例如:

userhours: {
    userId: {
        0: {
            name: "username",
            times: "time here"
        }
    }
}

屏幕截图:https://prnt.sc/kpglr9

使用该索引对其进行格式化可以使其真正得以维护。我无法有效地更新/设置/检索节点。 我可以使用类似的

        loadUserHours() {
        var userId = firebase.auth().currentUser.uid;
        firebase.database().ref("userhours").once("value").then((data) => {
            const allRows = [];
            let obj = data.val();
            for (let key in obj) {
                allRows.push({
                    name: obj[key][0].name,
                    times: obj[key][0].times
                })
            }
            console.log(allRows)
            this.rows = allRows
        })
    },

只是简单地检索值,但是现在...如果userhours节点中有1个以上的用户,则我无法真正更新我的节点。如果我现在在更新用户#2(https://prnt.sc/kpgqzq)的值后尝试使用submitHours()方法,它将把新信息存储在新节点中,如下所示:{{3 }},

有人可以帮助我解决如何有效存储和检索应用程序数据的问题吗?

一吨

0 个答案:

没有答案