我是firebase和Nosql数据库的新手。我已经阅读了这些文件,但我似乎无法理解这个概念。 我几乎在这里经历了关于它的每一个问题,但每个人似乎都很方便地跳过我正在寻找的小细节。 假设我已经使用firebaseauth成功注册了我的用户,并且可以将它们登录和注销,我的数据库规则如下:
{
"rules": {
"users":{
"$userid":{
".read": "auth !== null && auth.uid == $userid",
".write": "auth !== null && auth.uid == $userid"
}
}
}
}
太棒了!,现在这是多用户应用程序的基本数据库。我的问题是用户数据不会自动从auth推送到数据库,所以我必须做一个
mRef = FirebaseDatabase.getInstance().getReference();
mUserRef = mRef.child("users");
mSendButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String uid = mAuth.getCurrentUser().getUid();
String name = "User " + uid.substring(0, 6);
Userid userid = new Userid(uid);
mUserRef.push().setValue(userid, newDatabaseReference.CompletionListener() {
等等,关于注册性,所以任何用户ID都可以在用户下面拥有自己的节点,我可以发布任何用户特定的数据。 我还没有实现这个,但是我预见到用户执行的任何读取或写入数据都必须搜索每个节点以找到自己的用户ID,这会占用很多时间,当你扩展到喜欢很多用户时而且我确定firebase比这更好。这就是firebase希望我们处理用户资料的方式,还是每个用户都拥有自己的数据库实例
答案 0 :(得分:2)
push()
方法会创建一个新的随机ID。这对于聊天应用程序中的消息等内容很有用,但可能不是您正在寻找的内容。
我认为你的意思是这样做:
// Get current UID
String uid = mAuth.getCurrentUser().getUid();
// Get reference to /users/<uid>
DatabaseReference ref = mUserRef.child(uid);
// Set the value of /users/<uid> to the UserId
Userid userid = new Userid(uid);
ref.setValue(userid);