Flutter × Firestore 추가, 업데이트, 얻기
값 추가
Firebase users 컬렉션의 필드 값에 값을 추가하려면 다음과 같이 작성합니다.
이번에는 name이라는 필드 값에 무명의 곰을 추가합니다. * add는 임의의 문서 ID가 생성됩니다
FirebaseFirestore.instance.collection('users').add({
'name' : '名無しのごんべ'
});
set는 문서 ID를 지정하여 추가·일괄 갱신을 할 수 있습니다.
FirebaseFirestore.instance.collection('users').doc(uid).set({
'name' : '名無しのごんべ'
});
값 업데이트
필드치를 갱신하려면 doc(uid) (와)과 문서 ID를 지정해 key에 필드치, value에 추가하고 싶은 값을 삽입합니다.
FirebaseFirestore.instance.collection('users').doc(uid).update({
'name' : 'ymktmk'
});
값 얻기
QuerySnapshot은 여러 문서 ID를 가져올 수 있습니다. 여러 문서 ID를 하나씩 forEach로 돌리고 있습니다.
FirebaseFirestore.instance.collection('users').get().then((QuerySnapshot snapshot) {
snapshot.docs.forEach((doc) {
/// usersコレクションのドキュメントIDを取得する
print(doc.id);
/// 取得したドキュメントIDのフィールド値nameの値を取得する
print(doc.get('name'));
});
});
DocumentSnapshot은 단일 문서 ID를 가져옵니다. 따라서 doc(uid) 및 문서 ID를 지정합니다.
FirebaseFirestore.instance.collection('users')
.doc(uid).get().then((DocumentSnapshot snapshot) {
print(snapshot.get('name'));
});
실시간으로 획득
실시간으로 취득할 때는 get가 아닌 snapshot을 붙입니다.
FirebaseFirestore.instance.collection('users')
.snapshots().listen((QuerySnapshot snapshot) {
snapshot.docs.forEach((doc) {
print(doc.get('name'));
});
});
FirebaseFirestore.instance.collection('users')
.doc(myId).snapshots().listen((DocumentSnapshot snapshot) {
print(snapshot.get('name'));
});
StreamBuilder 사용
깜박임 StreamBuilder를 사용하여 실시간으로 View에 표시하는 것이 좋습니다.
class Example extends StatelessWidget {
final myId = FirebaseAuth.instance.currentUser!.uid;
@override
Widget build(BuildContext context) {
return StreamBuilder<DocumentSnapshot>(
stream: FirebaseFirestore.instance.collection('users').doc(myId).snapshots(),
builder: (BuildContext context, AsyncSnapshot<DocumentSnapshot> snapshot) {
if (snapshot.hasData) {
return Text(snapshot.data!['name']);
} else {
return Container();
}
}
);
}
}
다음과 같이 쓸 수 있습니다. stream: MeetController.getMatch(), 그럼 Stream>을 돌려주는 모델을 작성하면 OK입니다.
class Example extends StatelessWidget {
@override
Widget build(BuildContext context) {
return StreamBuilder<List<RoomModel>>(
stream: MeetController.getMatch(),
builder: (BuildContext context, AsyncSnapshot<List<RoomModel>> snapshot) {
print(snapshot.data![0].roomId);
}
);
}
}
Reference
이 문제에 관하여(Flutter × Firestore 추가, 업데이트, 얻기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/ymktmk_tt/items/0e350ced5c20ec0caea9텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)