База данных Firebase RealTime для пользователей - PullRequest
0 голосов
/ 22 мая 2019

Хелу, ребята! Я создаю приложение и хочу, чтобы каждый пользователь сохранял свою информацию, и она будет храниться в моей базе данных Firebase в реальном времени. Я просмотрел множество учебных пособий, но ничего не получилось. Я создал что-то простое. Кнопка, которая дает команду сохранить данные, 2 EditText для имени и имени. Моя проблема в том, что в базе данных ничего не написано. Я хочу, чтобы каждый вошедший в систему пользователь сохранял свою информацию отдельно. Аутентификация firebase завершена. Я создал класс UserDetails, который получил и установил имя и второе имя. Я только инициализировал кнопку и EditText, потому что я удалил команды для базы данных реального времени, потому что она не работала, и мое приложение зависало, когда Я открыл активность UserDetails.

I

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

Я хочу сохранить каждую информацию под userID после того, как пользователь вошел в систему, но ничего не написано.

1 Ответ

1 голос
/ 22 мая 2019

ссылаются на входные данные с моей стороны,

  1. Запаркуйте правила безопасности, пока сделайте их общедоступными, как только вы сможете размещать данные с Android, тогда вы сможете работать над правилами.
  2. База данных Firebase в реальном времени хранит данные в дереве JSON.
  3. Следующая инструкция даст вам ссылку на конкретный {userId}.Если он недоступен, т.е. в первый раз, он автоматически создаст запись.

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

вы можете установить пользовательский объект или хэш-карту в ref ref.setValue(hashmap) или ref.setValue(user) (HashMap будет содержать пару ключ-значение или пользователь будет экземпляром вашего класса User)

дополнительные ссылки:https://firebase.google.com/docs/database/android/read-and-write

Надеюсь, это поможет, удачного кодирования!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...