【问题标题】:Firebase working with list dataFirebase 处理列表数据
【发布时间】:2017-03-22 08:13:45
【问题描述】:
"groups": {

"techpioneers": {

      "name": "Historical Tech Pioneers",

      "members": {
        "alovelace": true,
        "ghopper": true,
        "eclarke": true
      }
    },
    ...
  }

这种结构可以在 firebase 文档中找到,但我不知道如何处理“成员”子项。如何将“通配符”用户名写为键,布尔值作为值?

【问题讨论】:

    标签: angularjs firebase ionic-framework firebase-realtime-database angularfire


    【解决方案1】:

    您可以使用set()。 Firebase 使用 URL,因此您可以访问 members,如示例所示。

    firebase.database().ref('groups/techpioneers/members').set({
        alovelace: true,
        ghopper: true,
        eclarke: true
    });
    

    编辑:

    您可以将alovelace 设置为当前的uid。首先获取当前用户的uid。

    var user = firebase.auth().currentUser;
    var uid = '';
    if (user != null) {
        uid = user.uid;
    }
    

    然后设置它

    var Obj = {};
    Obj[uid] = true;
    firebase.database().ref('groups/techpioneers/members/').set(Obj);
    

    如果你想在成员中设置多个用户,你可以使用push():

    var Obj = {};
    Obj[uid] = true;
    firebase.database().ref('groups/techpioneers/members/').push(Obj);
    

    查看文档here

    【讨论】:

    • 但是如果我想将 alovelace 更改为当前的 uid 怎么办?我之前尝试过,但使用的是 firebase.database().ref('groups/techpioneers/members').set({ uid : true //uid 是包含当前 uid 值的变量});
    • 应该这样做.. firebase.database().ref('groups/techpioneers/members/' + uid).set({ uid: true });我认为 name 键应该更改为 uid?
    • 检查我的编辑@ShadyChan。在示例中,我使用uid 的值设置键。如果我的回答帮助您考虑批准它。
    • 如果我的回答帮助您考虑批准它。 @ShadyChan
    【解决方案2】:

    您实际上只需要将布尔值(或用户名对象)写入数据库。当您添加第一个子节点时,将创建所需的子节点。

    例如:

    firebase.database().ref('groups/techpioneers/members' + username).set(true);
    

    firebase.database().ref('groups/techpioneers/members').set({username: true});
    

    【讨论】:

    • 我用第一个例子得到了我想要的结果!非常感谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-18
    • 1970-01-01
    • 2020-04-30
    • 2015-05-16
    • 2010-12-12
    • 1970-01-01
    相关资源
    最近更新 更多