如何使用自定义键在数据库中保存数据?

时间:2017-02-06 21:27:18

标签: angular firebase firebase-realtime-database ionic2 angularfire2

我很感激你能帮我解决以下问题:

我有一个Ionic 2项目,需要知道如何使用Firebase数据库中的自定义密钥保存对象。

实际上,在Firebase中我有:

+ blabla
+ blabla
- users : 
    - UIDXXX : {
        + last_audio: {}
        + sessions : []
    }

好吧,而不是字符串UIDXXX,我需要将用户的uid保存为键,例如:

- users : 
          - 232ssadas223ss2 : {
                  + last_audio: {}
                  + sessions : []
            }
          - das112dasd21dsd : {
                  + last_audio: {}
                  + sessions : []
            }

           .
           .
           .

这就是我实际检索数据的方式:

this.auth.subscribe((user) => {
    if (user) {
        let firebaseObservable = this.angularFire.database.object(`/users`);
        firebaseObservable.update({
            useruid : {
                last_audio: this.audio,
                sessions: [
                    "Hoy",
                    "Ayer"
                ]
             }
        });
    }
});

但是,显然我将“userid”这个词保存为关键字而不是user.uid,而在Firebase中我得到了:

users :
- useruid : {
    + last_audio: {}
    + sessions : []
}

非常感谢你。

1 个答案:

答案 0 :(得分:1)

您可以使用所谓的括号表示法将数据设置到对象中:

    let firebaseObservable = this.angularFire.database.object(`/users`);
    var updates = {};
    updates[userid] = {
            last_audio: this.audio,
            sessions: {
                "Hoy": true,
                "Ayer": true
            }
         };
    firebaseObservable.update(updates);

我还将您的sessions数组更改为一组,因为它可能更好地反映您要存储的内容。有关阵列与集合的更多内容,请参阅我的答案:Firebase query if child of child contains a value