不知道downvote是什麼,但這裏是我最終使用的解決方案。
通過facebookId而不是firebaseId存儲分數允許查找朋友分數,因爲無論如何facebookId都無法映射到firebaseId,因此無法將其存儲在數據庫中。它看起來像這樣:
facebookUsers {
facebookId {
"firebaseId" : firebaseId,
"scores" : {
level : score,
}
}
}
這種結構可以讓你輕鬆地查找facebookId分數,如果需要進行其他操作也映射facebookIds到firebaseIds。
要保存得分:
FirebaseDatabase.DefaultInstance
.GetReference("facebookUsers")
.Child(facebookId)
.Child("scores")
.Child(level)
.SetValueAsync(score);
查找分數:
FirebaseDatabase.DefaultInstance
.GetReference("facebookUsers")
.Child(facebookId)
.Child("scores")
.Child(level)
.GetValueAsync();
要限制基於facebookId寫入,請使用以下規則:
{
"rules": {
".read": "auth != null",
"facebookUsers": {
"$facebookId" : {
".write": "data.child('firebaseId').val() == auth.uid || (!data.exists() && newData.child('firebaseId').val() == auth.uid)",
}
}
}
}
希望這可以幫助別人更多比downvote。
是否要將FacebookId作爲Firebase用戶的財產?我將管理這個的方式是在數據庫對象中有一個名爲「FacebookID」的屬性。 –
我想過如何將FacebookId存儲在數據庫中。這可以讓我用我已經擁有的Facebook ID查詢每個$ uid,然後使用該$ uid查找分數。有沒有人有更好的解決方案? fbusers { $ fbid { $ uid } } – WakeZero