当前位置: 首页 > 知识库问答 >
问题:

Firebase实时数据库查询

弘承运
2023-03-14

我有一个firebase数据库,员工数据的结构如下。我还有一个用户表,它具有'Company ID'属性。每次用户登录时,我都希望获取与用户“公司ID”匹配的所有员工。是否有可能实现这使用firebase数据库规则或我必须写一些查询。

Employee: 
{
  "+911234567890" : {
    "admin" : true,
    "companyId" : "C1",
    "depId" : "D5",
    "designation" : "D1",
    "dob" : "2019-04-02T18:30:00.000Z",
    "doj" : "2019-04-18T18:30:00.000Z",
    "empEmail" : "nishant.k@zetwerk.com",
    "empId" : "E4",
    "empPhone" : "+911234567890",
    "first_name" : "Nishanth",
    "gender" : "male",
    "last_name" : "K",
    "manager" : "M2",
    "type" : "permanent"
  },
  "+919035105184" : {
    "admin" : true,
    "companyId" : "C2",
    "depId" : "D1",
    "designation" : "Software engineer",
    "dob" : "1991-07-31T18:30:00.000Z",
    "doj" : "2018-07-24T18:30:00.000Z",
    "empEmail" : "arpit.s@zetwerk.com",
    "empId" : "E10",
    "empPhone" : "+919035105184",
    "first_name" : "Arpit",
    "gender" : "male",
    "last_name" : "Srivastava",
    "manager" : "M1",
    "type" : "PERMANANENT"
  },
  "+919698286236" : {
    "admin" : false,
    "companyId" : "C1",
    "companyName" : "Zetwerk",
    "depId" : "D1",
    "depName" : "Engineering",
    "empEmail" : "dhanalakshmi.s@zetwerk.com",
    "empId" : "E1",
    "empPhone" : "+919698286236",
    "firebaseId" : "-LbNvaKFjqaaMl_JbNxd",
    "first_name" : "Dhanalakshmi",
    "type" : "contract"
  },
  "+919738749877" : {
    "companyId" : "C1",
    "depId" : "D2",
    "empEmail" : "sagar.k@zetwerk.com",
    "empId" : "E3",
    "empPhone" : "+919738749877",
    "firebaseId" : "-LbNbABScOEzl-sMFE1u",
    "first_name" : "Sagar",
    "type" : "permanent"
  },
  "+919972984851" : {
    "admin" : true,
    "companyId" : "C1",
    "depId" : "D6",
    "designation" : "SDE",
    "dob" : "2019-04-23T18:30:00.000Z",
    "doj" : "2019-04-02T18:30:00.000Z",
    "empEmail" : "saikumarganji1994@gmail.com",
    "empId" : "Z002",
    "empPhone" : "+919972984851",
    "first_name" : "Sai",
    "gender" : "male",
    "last_name" : "Kumar",
    "type" : "permanent"
  }
}


User:
 "1":{
  "Name" : "Nishant Gupta",
  "companyId" : "C1",
  "role" : "admin"
} 

共有1个答案

葛志国
2023-03-14

您确实必须使用查询,如下所示。我假设您在前端知道用户的companyID

  var db = firebase.database();

  var userCompanyId = 'C1';  //you'll probably get this value from the user profile

  db.ref('Employee')
    .orderByChild('companyId')
    .equalTo(userCompanyId)   
    .once('value', function(dataSnapshot) {
      dataSnapshot.forEach(function(childSnapshot) {
        var childKey = childSnapshot.key;
        var childData = childSnapshot.val();
        console.log('childKey : ', childKey);
        console.log('childData : ', childData);
      });
    });
 类似资料:
  • 我在一个Android应用程序中使用Firebase数据库,每次用户启动时,我都会在数据库中存储一些值,为此我会执行以下操作: 正如您在子方法中看到的,如果称为“usrId”,它将创建usrId目录,并在其中添加所有neccesary信息。但是我想为每个用户创建目录,所以我尝试传递usrId变量作为参数。但它不起作用。当我调试代码时,调试器说本地var usrId无法识别,我的问题是如何在Fire

  • 3.移除值事件侦听器和脱机的区别。

  • 我正在尝试检索一些值而不是其他值。事实上,我想通过用户的名字来搜索他们。 我尝试使用和,但找不到正确的解决方案。 如您所见,我还添加了。如果我不添加那个部分,它就不会检索任何东西。我想要的只是从我在TextField中所写的内容开始检索值。

  • 该库只支持Double、Boolean和String。我现在真困惑。怎么可能?

  • 所以我正在制作约会应用程序,现在我需要为用户创建一个匹配的人员列表。 因此,我需要一个firebase查询来查看性别,并检查是否已经匹配,如果匹配,则不应将其包括在列表中。 我试着按性别过滤数据。如何编辑此查询以检查它们是否已匹配?匹配项显示在用户/{userID}/Matches/{matchedUserID}中 这是我尝试的: