플러터에서 파이어베이스 doc ID 얻는 방법

2024. 5. 25. 17:16Flutter/Flutter Programming

반응형

Flutter에서 파이어베이스 Doc ID 얻는 방법

안녕하세요! 오늘은 Flutter에서 파이어베이스 데이터베이스의 문서 ID를 얻는 방법을 알려드리겠습니다.

파이어베이스 데이터베이스는 NoSQL 데이터베이스로서, 문서와 컬렉션으로 구성됩니다.

문서는 고유한 ID를 가지고 있으며, 이 ID를 사용하여 특정 문서에 액세스하고 데이터를 읽고 쓸 수 있습니다.

 

1. 문서 ID 얻기

문서 ID를 얻는 방법은 여러 가지가 있습니다.

 

1.1 자동 생성 ID

문서를 생성할 때 파이어베이스는 자동으로 문서 ID를 생성합니다. 이 ID는 랜덤으로 생성되며, 길이가 약 20자리의 문자열입니다.

final docRef = FirebaseFirestore.instance.collection('users').doc();
await docRef.set({
  'name': 'Flutter Learner',
  'email': 'flutterlearner@example.com',
});

print('Document ID: ${docRef.id}'); // 자동 생성된 ID 출력
 

1.2 사용자 정의 ID

문서를 생성할 때 사용자 정의 ID를 사용할 수도 있습니다.

final docRef = FirebaseFirestore.instance.collection('users').doc('flutter-learner');
await docRef.set({
  'name': 'Flutter Learner',
  'email': 'flutterlearner@example.com',
});

print('Document ID: ${docRef.id}'); // 사용자 정의 ID 출력
 

2. 문서 참조 사용

문서 참조를 사용하여 문서 ID를 얻을 수 있습니다. 문서 참조는 문서 위치를 나타내는 객체입니다.

final docRef = FirebaseFirestore.instance.collection('users').doc('flutter-learner');
print('Document ID: ${docRef.id}'); // 'flutter-learner' 출력
 

3. 문서 스냅샷 사용

문서 스냅샷을 사용하여 문서 ID를 얻을 수 있습니다. 문서 스냅샷은 문서 데이터와 문서 위치에 대한 정보를 포함하는 객체입니다.

final docRef = FirebaseFirestore.instance.collection('users').doc('flutter-learner');
final docSnap = await docRef.get();

if (docSnap.exists) {
  print('Document ID: ${docSnap.id}'); // 'flutter-learner' 출력
} else {
  print('Document not found');
}
 

4. 쿼리 결과 사용

쿼리 결과에서 문서 ID를 얻을 수 있습니다. 쿼리는 특정 조건에 맞는 문서 목록을 반환합니다.

final collectionRef = FirebaseFirestore.instance.collection('users');
final query = collectionRef.where('email', isEqualTo: 'flutterlearner@example.com');
final querySnap = await query.get();

for (final docSnap in querySnap.docs) {
  print('Document ID: ${docSnap.id}'); // 'flutter-learner' 출력
}
 

5. 주의 사항

  • 문서 ID는 영문자, 숫자, 하이픈(-)으로만 구성되어야 합니다.
  • 문서 ID는 1024자 이하여야 합니다.
  • 문서 ID는 대소문자를 구분하지 않습니다.

참고자료

  • FirebaseFirestore documentation
  • Flutter Firestore tutorial

궁금한 점이 있거나 도움이 필요하면 언제든지 말씀해주세요!

반응형