簡體   English   中英

Firebase數據結構-訪問每個用戶的jobID

[英]Firebase data structuring - accessing jobIDs for each user

在我的數據庫中,我目前有兩種對象,用戶和作業。 我已經在工作中存儲了用戶ID。 我還需要在每個用戶中存儲jobID嗎?

典型用戶

 "-JqzUjcOfddBNd_HtjKb" : {
  "contact" : {
    "-JqzWcIyD77ZwatEKALp" : {
      "email" : "someguy@yahoo.com"
    },
    "-JqzWrtyni3ZGOKooNF7" : {
      "email" : "someguy@outlook.com"
    }
  },
  "country" : "234",
  "cv" : "https://linktourl.com",
  "dateAdded" : 1433436879708,
  "ethnicity" : "0",
  "firstName" : "John",
  "lastName" : "Smith",
  "notes" : {
    "-JqzhvtNcueUsPr8xwh8" : {
      "date" : 1433440599702,
      "user" : "iwrotethisnote@example.com",
      "value" : "interested in job; need to interview"
    }
  },
  "roles" : [ true ]
},

和一個典型的工作

"-Jqz5mOr-DmLcxmTVRPi" : {
  "age" : [ "2" ],
  "city" : "0",
  "clientID" : "-Jqz7goZC76vl94VT0dq",
  "dateModified" : 1433431226687,
  "longDesc" : "Teacher should have experience",
  "notes" : {
    "-Jqz6SO74OJOESwOVfkG" : {
      "date" : 1433430513294,
      "notevalue" : "bill spoke with her",
      "userid" : "name@gmail.com"
    }
  },
  "schedule" : "Evening or weekend",
  "status" : "needDetail",
  "subjects" : {
    "15" : true,
    "42" : true
  },
  "title" : "She wants a native speaker"
},

如您所見,作業有一個clientID字段,這是用戶ID的外鍵(可以這么說)。 當我訪問用戶的信息時,我想知道他們與之關聯的那些工作(即,他們已經為其提供了客戶ID)。 如何在Firebase中執行此操作?

我是不是該:

  1. 更新兩個對象,並在客戶端對象中保留JobID數組?

  2. 查詢所有作業,然后傳遞以用戶ID作為客戶端ID的那些作業。 就像是:

     // user controller var jobs = []; jobsRef.$on('value', function(snapshot) { snapshot.val().forEach(function(job) { if (job.clientID = $scope.userID) { jobs.push(job); } } } 

選項1使數據冗余(由於強調非規范化,所以我認為還可以),但是它也使數據變得更不同步,例如,如果我要進行的兩個更新之一失敗。

選項2似乎運行起來會慢很多。

您可以使用firebase查詢的equalTo()

var jobsRef = new Firebase();
jobsRef.orderByChild("clientID").equalTo($scope.userID)
.on("value", function(snapshot) {
  console.log(snapshot.key());
});

有關更多信息,請查看Query.equalTo()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM