firebase-database
안드로이드와 FirebaseRealtime 데이터베이스
수색…
Android에 실시간 데이터베이스 추가
설치를 완료하고 앱을 Firebase에 연결하십시오.
그러면 Firebase에 프로젝트가 생성됩니다.Firebase Realtime Database에 대한 의존성을 모듈 수준
build.gradle파일에build.gradle하십시오 :
compile 'com.google.firebase:firebase-database:9.2.1'
이제 Android에서 실시간 데이터베이스로 작업 할 준비가되었습니다.
예를 들어, Hello World 메시지를 message 키 아래의 데이터베이스에 씁니다.
// Write a message to the database
FirebaseDatabase database = FirebaseDatabase.getInstance();
DatabaseReference myRef = database.getReference("message");
myRef.setValue("Hello, World!");
setValue를 사용하여 데이터 저장
setValue() 메소드는 자식 노드를 포함하여 지정된 위치의 데이터를 덮어 씁니다.
이 방법을 사용하여 다음을 수행 할 수 있습니다.
- 사용 가능한 JSON 유형에 해당하는 패스 유형은 다음과 같습니다.
- 끈
- 긴
- 더블
- 부울
- Map <String, Object>
- 명부
- 사용자 정의 Java 객체를 정의하는 클래스에 인수가없는 기본 생성자가 있고 속성을 할당 할 공용 getter가있는 경우 전달합니다.
이것은 CustomObject의 예입니다.
먼저 객체를 정의하십시오.
@IgnoreExtraProperties
public class User {
public String username;
public String email;
public User() {
// Default constructor required for calls to DataSnapshot.getValue(User.class)
}
public User(String username, String email) {
this.username = username;
this.email = email;
}
그런 다음 데이터베이스 참조를 가져 와서 값을 설정하십시오.
User user = new User(name, email);
DatabaseReference mDatabase mDatabase = FirebaseDatabase.getInstance().getReference();
mDatabase.child("users").child(userId).setValue(user);
Firebase에서 데이터 삽입 또는 데이터 검색 예제
이해하기 전에 프로젝트가 firebase와 통합되도록 일부 설정을 수행해야합니다.
Firebase 콘솔에서 프로젝트를 만들고 콘솔에서 google-service.json 파일을 다운로드하여 프로젝트의 앱 수준 모듈에 넣습니다 . 콘솔에서 프로젝트 만들기 링크를 클릭하십시오.
이 후 우리 프로젝트에 어떤 의존성을 추가 할 필요가있다.
먼저 프로젝트 레벨 gradle에 클래스 경로를 추가합니다.
classpath 'com.google.gms:google-services:3.0.0'그리고 그 응용 프로그램 수준에서 플러그 접속 식을 적용한 후에, dependancy 단면도의 밑에 그것을 쓰십시오,
apply plugin: 'com.google.gms.google-services의존성 섹션에 앱 레벨 그래 플을 추가해야하는 더 많은 의존성이 있습니다.
compile 'com.google.firebase:firebase-core:9.0.2'compile 'com.google.firebase:firebase-database:9.0.2'이제 firebase 데이터베이스에 데이터를 삽입하기 시작합니다. 먼저 인스턴스를 생성해야합니다.
FirebaseDatabase database = FirebaseDatabase.getInstance();FirebaseDatabase 객체를 생성 한 후에 데이터베이스에 데이터를 삽입하기위한 DatabaseReference를 생성 할 것이고,
DatabaseReference databaseReference = database.getReference().child("student");여기서
student는 테이블이 데이터베이스에 존재하면 테이블에 데이터를 삽입하고 그렇지 않으면 학생 이름이있는 새 테이블을 작성한 후databaseReference.setValue();사용하여 데이터를 삽입 할 수 있습니다databaseReference.setValue();다음과 같은 기능,HashMap<String,String> student=new HashMap<>();student.put("RollNo","1");student.put("Name","Jayesh");databaseReference.setValue(student);여기에 데이터를 hasmap으로 삽입합니다.하지만 모델 클래스로 설정할 수도 있습니다.
firebase에서 데이터를 검색하는 방법을 시작합니다. 여기서는 데이터베이스의 읽기 값으로 addListenerForSingleValueEvent를 사용하고 있습니다.
senderRefrence.addListenerForSingleValueEvent(new ValueEventListener() { @Override public void onDataChange(DataSnapshot dataSnapshot) { if(dataSnapshot!=null && dataSnapshot.exists()){ HashMap<String,String> studentData=dataSnapshot.getValue(HashMap.class); Log.d("Student Roll Num "," : "+studentData.get("RollNo")); Log.d("Student Name "," : "+studentData.get("Name")); } } @Override public void onCancelled(DatabaseError databaseError) { } });
firebase에서 값 가져 오기
- 클래스를 생성하고 가져 오기를 추가하여 정보를 파싱합니다.
import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.database.IgnoreExtraProperties;
//Declaration of firebase references
private DatabaseReference mDatabase;
//Declaration of firebase atributtes
public String uID;
public String username;
public String email;
@IgnoreExtraProperties
public class User {
//Default constructor
public User() {
//Default constructor required for calls to DataSnapshot.getValue(User.class)
mDatabase = FirebaseDatabase.getInstance().getReference();
//...
}
//...
}
-
addListenerForSingleValueEvent()를 데이터베이스 참조에 추가하십시오.
//Add new imports
import com.google.firebase.database.DataSnapshot;
import com.google.firebase.database.DatabaseError;
import com.google.firebase.database.ValueEventListener;
//...
public void getUser(String uID){
//The uID it's unique id generated by firebase database
mDatabase.child("users").child(uID).addListenerForSingleValueEvent(
new ValueEventListener () {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
// ...
}
@Override
public void onCancelled(DatabaseError databaseError) {
// Getting Post failed, log a message
}
});
}
-
onDataChange()이벤트에서 Firebase 정보로 클래스에 영향을줍니다 :
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
//Inflate class with dataSnapShot
Users user = dataSnapshot.getValue(Users.class);
//...
}
- 마지막으로 firebase 클래스에서 다른 atributtes를 정상적으로 얻을 수 있습니다.
//User inflated
Users user = dataSnapshot.getValue(Users.class);
//Get information
this.uID = user.uID;
this.username = user.username;
this.email = user.email;
모범 사례
- firebase는 32 개의 다른 하위 레벨을 지원합니다. 그러면 참조가 잘못 작성되어 간단히 개인 비공개 참조를 피할 수 있습니다.
//Declaration of firebase references
//...
final private DatabaseReference userRef = mDatabase.child("users").child("premium").child("normal").getRef();
//...
public void getUser(String uID){
//Call our reference
userRef.child(uID).addListenerForSingleValueEvent(
new ValueEventListener () {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
// ...
}
@Override
public void onCancelled(DatabaseError databaseError) {
// Getting Post failed, log a message
}
});
}
-
onCancelled()이벤트는 사용자가 데이터베이스 규칙에onCancelled()참조에 액세스 할 수 없을 때 호출됩니다. 필요한 경우이 예외를 제어하는 관련 코드를 추가하십시오.
자세한 내용은 공식 문서 를 참조하십시오.