Firebase 실시간 데이터베이스 : push (). set () 후 고유 키를 얻는 방법은 무엇입니까?

Nov 17 2020

내 flutter 코드에서 다음은 Firebase 실시간 데이터베이스에 데이터를 저장하기 위해 수행하는 작업입니다.

final DatabaseReference reference = FirebaseDatabase.instance.reference().child('chat_room');

void _sendMessage({String messageText, String imageUrl}) async{
    await reference.push().set({
      'text': messageText,
      'imageUrl': imageUrl,
    });

  }

이것은 데이터베이스에 다음 결과를 생성합니다

데이터를 제출하자마자 생성 된 고유 키를 검색해야하는데 어떻게 할 수 있습니까?

답변

2 RenaudTarnec Nov 17 2020 at 15:21

이 push()메서드는를 반환 DatabaseReference하므로 다음과 같이 할 수 있습니다.

final DatabaseReference reference = FirebaseDatabase.instance.reference().child('chat_room');

void _sendMessage({String messageText, String imageUrl}) async {
    DatabaseReference newRef = reference.push();
    String newKey = newRef.key;
    await newRef.set({
      'text': messageText,
      'imageUrl': imageUrl,
    });

  }

메서드를 DatabaseReference호출 할 때 즉시 새 push()메서드를 가져옵니다. 비동기 set()메서드 호출 이 완료 될 때까지 기다릴 필요가 없습니다 .

1 Akif Nov 17 2020 at 15:23

다른 접근 방식으로 해당 ID를 얻을 수 있습니다. 먼저 다음 ID를 가져 와서 항목을 푸시 할 수 있습니다. 다음과 같이 표시됩니다.


final DatabaseReference reference = FirebaseDatabase.instance.reference().child('chat_room');

void _sendMessage({String messageText, String imageUrl}) async{

    String newkey = reference.push().key; // That is your unique key!

   await reference.child(newkey).set({
      'text': messageText,
      'imageUrl': imageUrl,
    });
  }