Firebase RTDB中的组用户

时间:2018-07-21 16:45:31

标签: qt firebase firebase-realtime-database firebase-authentication qt5

我在Qt应用程序中使用Firebase进行身份验证和实时数据库功能,当用户注册时,需要将他们分配到所选组中,然后再分配到该组的部门中。每个小组都有管理员,他们可以访问整个小组数据库,但用户只能访问其部门。

下面是我的注册表单代码,该代码分配了某些用户值,我该如何将数据库中的用户与我的注册表单上的其他选项进行分组?

onUserRegistered: { 

        indicator.stopAnimating()

        console.debug("User login " + success + " - " + message)

        if(success) {
            loginDialog.title = "Success!"
            firebaseDb.setUserValue("Firstname", firstname.text)
            firebaseDb.setUserValue("Surname", surname.text)
        } else {
            loginDialog.title = "An Issue occured!"
        }
        loginDialog.text = message
        loginbutton.visible = true
        registerCheckbox.visible = true
        loginDialog.open()

    }

我希望按以下方式布置数据库,如果适合使用?具有用户的多个位置组可以访问数据库的这一部分!

{
  "groups" : {
    "Colchester" : {
    },
    "Ipswich" : {
    },
    "CanaryWharf" : {
      "Departments" : {
        "Admin" : {
          "members" : {
            "user1" : true
          }
        },
        "Assistant" : {
          "members" : {
            "user2" : true
          }
        },
        "Reception" : {
          "members" : {
            "user3" : true,
            "user1" : true
          }
        },
        "Stylist" : {
          "members" : {
            "user4" : true
          }
        },
        "Technician" : {
          "members" : {
            "user5" : true
          }
        }
      }
    }
  }

1 个答案:

答案 0 :(得分:0)

无法访问Firebase Cloud Firestore集合(在链接中进行了详细说明;

Google Firebase Cloud Firestore Collections

我通过以下代码实现了对用户进行分组的结果,如果有人仍然想添加改进的版本,请这样做,但是现在这对我来说是可行的:

App {
    id: app

    property var groupName  
    property var subGroupName

//these values are assigned when my user logs in from user values
//set in firebase on registration


firebaseDb.getUserValue("group", {
                                }, function(success, key, value) {
                                if(success){
                                groupName = value
                                console.log("GROUPNAME LOG: " + groupName)}})
}

///然后我在数据库中存储数据时在整个应用程序中使用这些值

///其中一个示例是我的应用中其他位置的AppButton

    AppButton {
        id: saveButton                        
        onClicked: {
            userData = ({"date": calendar.selectedDate, "name": userName +" "+ userSurname, "details": dayCycle.text, "status": "pending"})
            var time = new Date().getTime()
            firebaseDb.setValue("groups" + "/" + groupName + "/" + subGroupName + "/" + time, userData)
    }
}