【问题标题】:Firebase RealTime-Database for Users面向用户的 Firebase 实时数据库
【发布时间】:2019-10-09 03:39:57
【问题描述】:

嘿嘿伙计们!我正在创建一个应用程序,我希望每个用户都保存他的信息,并将其存储在我的 firebase 实时数据库中。我看了很多教程,但没有任何效果。我创建了一些简单的东西。一个按钮给出了存储命令数据,2 EditText 用于名字和名字。我的问题是数据库中没有写入任何内容。我希望每个登录用户单独存储他的信息。 firebase 身份验证已完成。我创建了一个 UserDetails 类,该类已经获取并设置了名字和第二个名字。我只初始化了按钮和 EditText,因为我删除了实时数据库的命令,因为它不起作用并且我的应用程序崩溃时我打开了 UserDetails 活动。

UserDetails(活动类)

package com.example.myapplication;

import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.widget.Button;
import android.view.View;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;

import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.auth.FirebaseUser;
import com.google.firebase.database.DataSnapshot;
import com.google.firebase.database.DatabaseError;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.database.ValueEventListener;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;

public class UserDetails extends AppCompatActivity {
    private FirebaseAuth auth;
  private DatabaseReference reference;
  private FirebaseDatabase database;
  private FirebaseAuth.AuthStateListener authStateListener;
    private FirebaseUser user;
    private EditText firstName;
    private EditText secondName;
    private Button saveInfo;



    @Override
    protected void onCreate (Bundle savedInstanceState) {
        super.onCreate ( savedInstanceState );
        setContentView ( R.layout.activity_user_details );
        firstName=(EditText)findViewById ( R.id.firstname );
        secondName=(EditText)findViewById ( R.id.secondname );
        saveInfo=(Button)findViewById ( R.id.data );
        auth=FirebaseAuth.getInstance ();







    }

}

用户(用于获取和设置)

package com.example.myapplication;

public class User {
   public String firstName;
    public String secondName;
    public String uid;
    public String email;
    public User(){

    }



    public User (String firstName, String secondName, String uid, String email) {
        this.firstName = firstName;
        this.secondName = secondName;
        this.uid=uid;
        this.email=email;
    }

    public User (String firstname, String secondname) {
    }

    public String getFirstName () {
        return firstName;
    }

    public String getSecondName () {
        return secondName;
    }

    public String getUid () {
        return uid;
    }

    public String getEmail () {
        return email;
    }

    public void setFirstName (String firstName) {
        this.firstName = firstName;
    }

    public void setSecondName (String secondName) {
        this.secondName = secondName;
    }

    public void setUid (String uid) {
        this.uid = uid;
    }

    public void setEmail (String email) {
        this.email = email;
    }
}

实时数据库规则

{
  "rules": {
    ".read": "auth != null",
    "$user_id":{
       ".read": "auth.uid === $user_id",
       ".write": "auth.uid === $user_id"

    }
  }
}

实时数据库中的数据

sports-buddy-eb866
users
firstname: 
true
secondname: 
true

我想在用户登录后将所有信息存储在用户ID下面但什么都没有写入。

【问题讨论】:

    标签: android firebase firebase-realtime-database


    【解决方案1】:

    参考我这边的意见,

    1. 保留安全规则,暂时将其公开,一旦您能够从 Android 中放置数据,您就可以处理规​​则。
    2. Firebase 实时数据库将数据存储在 JSON 树中。
    3. 以下说明将为您提供对特定 {userId} 的引用。如果它不可用,即第一次,它将自动创建一个条目。

    DatabaseReference ref = FirebaseDatabase.getInstance().getReference("users/{userId}");

    1. 您可以将用户对象或 hashmap 设置为 ref ref.setValue(hashmap)ref.setValue(user)(HashMap 将包含键值对或用户将是您的 User 类的实例)

    其他链接: https://firebase.google.com/docs/database/android/read-and-write

    希望对您有所帮助,祝您编码愉快!

    【讨论】:

    • 你能说得更清楚些吗?我使用了你给我的附加链接,但没有用。我是 firebase 的新手。我不知道该怎么做。我尝试了我找到的所有内容,但数据库中没有写入任何内容。
    • 请确保您已删除测试规则。另外,您能否查看日志以获取任何可以帮助我们查明问题的信息?
    猜你喜欢
    • 2020-11-27
    • 1970-01-01
    • 2021-12-14
    • 2018-03-03
    • 2020-01-17
    • 2019-04-18
    • 1970-01-01
    • 1970-01-01
    • 2020-11-14
    相关资源
    最近更新 更多