2017-03-22 39 views
0

同時更新多個用戶我在火力地堡2.x的DB的對象,看起來與此類似:在火力

{ 
    "users": { 
    "$id": { 
     "date_of_birth": "June 23, 1912", 
     "full_name": "Alan Turing", 
     "group": "users", 
     "nickname": "Alan The Machine" 
    } 
    } 
} 

和搜索,同時更新多個用戶的最佳方式。例如,我想將所有用戶組中的用戶更改爲組「moderadors」或類似組。

我該怎麼做?

+0

當然,我可以讓所有用戶通過對象組X循環遍歷對象,並將所有組X都更改爲Y組,然後通過更新將整個數據寫回,但我懷疑這是數據庫的最佳方法成千上萬的用戶。我正在尋找的基本上是我會在MySQL中做什麼(update WHERE group = x) – Oliver

回答

1

有幾種方法可以解決這個問題,並且您在評論中提到了一個。

1)查詢group = users的所有用戶。遍歷每個和每一個到組更新組=主持人

2)添加一些結構

users 
    uid_0 
    "date_of_birth": "June 23, 1912", 
    "full_name": "Alan Turing", 
    "group": "-UY89j99j9jasd", 
    "nickname": "Alan The Machine" 
    uid_1 
    "date_of_birth": "June 23, 1912", 
    "full_name": "Alan Turing", 
    "group": "-Y888jasjdjaos", 
    "nickname": "Alan The Machine" 
    uid_2 
    "date_of_birth": "June 23, 1912", 
    "full_name": "Alan Turing", 
    "group": "-UY89j99j9jasd", 
    "nickname": "Alan The Machine" 

和組

-UY89j99j9jasd 
    group_name: "users" 
-Y888jasjdjaos 
    group_name: "dudes" 

然後把所有的誰是「用戶的當前用戶'轉換爲版主,將group_name更改爲'版主'。這也很好,因爲如果你決定不喜歡「版主」這個詞,而是想給他們打電話,那麼你可以用一個變化來做到這一點。

-UY89j99j9jasd 
    group_name: "moderators" //or 'people who pwn' 
-Y888jasjdjaos 
    group_name: "dudes" 

3)翻轉你的邏輯並將用戶存儲在主持人或用戶節點中。

users 
    uid_0 
    "date_of_birth": "June 23, 1912", 
    "full_name": "Alan Turing", 
    "nickname": "Alan The Machine" 
    uid_1 
    "date_of_birth": "June 23, 1912", 
    "full_name": "Alan Turing", 
    "nickname": "Alan The Machine" 
    uid_2 
    "date_of_birth": "June 23, 1912", 
    "full_name": "Alan Turing", 
    "nickname": "Alan The Machine" 

和組

-U8asdjoasjds 
    group_name: "moderators" 
    members: 
    uid_0: true 
    uid_2: true 
-Yuiis9isisis 
    group_name: "users" 
    members 
    uid_1: true 

現在你可以很容易地得到所有孩子的用戶/成員組,並將它們添加到管理員組,並且您還可以更改組的名稱爲好。

4)不推薦這種

administrators 
    uid_0: true 
    uid_2: true 
users 
    uid_1: true 

這類似於#3,但關鍵的識別組型。與3相同,獲得用戶的子女並將其寫入管理員。通常情況下,最好的做法是將鍵名與它們包含的數據分離,但在這種情況下可能沒問題。

+0

謝謝Jay,你在這裏得到了一些很棒的觀點,並且你解釋了所有非常容易理解的東西。我已經基本上情況2,但在這種情況下,我不能只重命名該組具有不同的權限,如果我刪除一個組,我需要將該組中的所有用戶移動到另一個組,但不能重命名舊組,因爲我可能會有雙人組。所以我最終會選擇1和2的混合。你證實了我的想法。我希望有一些簡單的MySQL類型或方法:)但我很高興任何一種方式。 – Oliver