본문 바로가기
C#/Firebase

C# : Firebase 사용하기 - 06 (Firebase 데이터 삭제)

by Half-Dev 2021. 1. 2.

안녕하세요.

하프개발자 입니다.

이번에는 Firebase 데이터 삭제에 대해서 알아보도록 하겠습니다.

 


Part 1. 문서 삭제

필드를 삭제하기 위해선 DeleteAsync를 사용합니다.

전과 같이 수동으로 Testing2 컬렉션Doc1, Doc2 문서를 생성해주시고 필드도 추가해주세요.

 

 

 

다음으로 코드도 추가해줄게요

코드를 실행시켜보면 Testing2 컬렉션Doc1 문서가 삭제되는것을 볼 수 있습니다.

 

1
2
3
4
5
6
void Delete_An_Entire_Document()
{
    DocumentReference docref = db.Collection("Testing2").Document("Doc1");
    docref.DeleteAsync();
    MessageBox.Show("Done");
}
cs

 

 

Part 2. 특정 필드 삭제

특정 필드를 삭제하기 위해서는 FieldValue.Delete를 사용합니다.

 

1
2
3
4
5
6
7
8
9
10
11
void Delete_A_Field_Within_A_Document()
{
    DocumentReference docref = db.Collection("Testing2").Document("Doc2");
    Dictionary<stringobject> data = new Dictionary<stringobject>()
    {
        {"age", FieldValue.Delete }
    };
    docref.UpdateAsync(data);
    MessageBox.Show("Done");
 
}
cs

 

 

Part 3. 리스트의 필드 삭제

리스트의 필드 삭제를 위해서 Add_ListOfObjects 컬렉션을 이용하도록 하겠습니다.

아래의 결과를 보면 FieldValue.Delete를 이용해 필드가 삭제 되는것을 볼 수 있습니다.

 

1
2
3
4
5
6
7
8
9
10
void Delete_An_Element_Inside_A_List()
{
    DocumentReference docref = db.Collection("Add_ListOfObjects").Document("myDoc");
    Dictionary<stringobject> data = new Dictionary<stringobject>()
    {
        {"MyList.PhoneNumber", FieldValue.Delete }
   };
    docref.UpdateAsync(data);
    MessageBox.Show("Done");
}
cs

 

 

 

Part 4. Array의 필드 삭제

Array의 필드 삭제를 위해서 Add_Array 컬렉션을 이용하도록 하겠습니다.

Array의 필드 삭제는 FieldValue.ArrayReomve를 사용합니다.

 

1
2
3
4
5
6
7
8
9
10
void Delete_An_Element_Inside_An_Array()
{
    DocumentReference docref = db.Collection("Add_Aray").Document("myDoc");
    Dictionary<stringobject> data = new Dictionary<stringobject>()
    {
        {"My Array", FieldValue.ArrayRemove(456true) }
    };
    docref.UpdateAsync(data);
    MessageBox.Show("Done");
}
cs

 

 

 

Part 5. 해당 컬렉션의 모든 문서 삭제

해당 컬렉션의 모든 문서 삭제를 위해서는 그동안 썼던 DocumentReference가 아닌 CollectionReference로 사용해야 합니다.

 

1
2
3
4
5
6
7
8
9
10
11
async void Delete_All_Documents_In_A_Collection()
{
    CollectionReference collref = db.Collection("Testing2");
    QuerySnapshot snap = await collref.GetSnapshotAsync();
 
    foreach (DocumentSnapshot doc in snap.Documents)
    {
        await doc.Reference.DeleteAsync();
    }
 
}
cs

 


제가 준비한 내용은 여기까지 입니다.

그럼 CRUD 여기서 끝이 났군요

 

이 다음글 부터는 회원가입, 로그인 화면을 만들어서 Firebase와 연동을 하는것으로 마무리를 짓겠습니다.

감사합니다.

 

 

 

해당 코드는 저의 깃허브에서도 볼 수 있습니다.

전체 코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
using System;
using System.Collections;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using Google.Cloud.Firestore;
 
namespace CsFirebaseBlog
{
    public partial class Form1 : Form
    {
        FirestoreDb db;
        public Form1()
        {
            InitializeComponent();
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
            Delete_An_Entire_Document();
        }
        private void button2_Click(object sender, EventArgs e)
        {
            Delete_A_Field_Within_A_Document();
        }
 
        private void button3_Click(object sender, EventArgs e)
        {
            Delete_An_Element_Inside_A_List();
        }
 
        private void button4_Click(object sender, EventArgs e)
        {
            Delete_An_Element_Inside_An_Array();
        }
        private void button5_Click(object sender, EventArgs e)
        {
            Delete_All_Documents_In_A_Collection();
        }
 
        private void Form1_Load(object sender, EventArgs e)
        {  
            string path = AppDomain.CurrentDomain.BaseDirectory + @"cs-firebase-blog-firebase-adminsdk-18cwe-b5971a4787.json";
            Environment.SetEnvironmentVariable("GOOGLE_APPLICATION_CREDENTIALS", path);
 
            db = FirestoreDb.Create("cs-firebase-blog");
        }
 
        void Delete_An_Entire_Document()
        {
            DocumentReference docref = db.Collection("Testing2").Document("Doc1");
            docref.DeleteAsync();
            MessageBox.Show("Done");
 
        }
 
        void Delete_A_Field_Within_A_Document()
        {
            DocumentReference docref = db.Collection("Testing2").Document("Doc2");
            Dictionary<stringobject> data = new Dictionary<stringobject>()
            {
                {"age", FieldValue.Delete }
            };
            docref.UpdateAsync(data);
            MessageBox.Show("Done");
        }
 
        void Delete_An_Element_Inside_A_List()
        {
            DocumentReference docref = db.Collection("Add_ListOfObjects").Document("myDoc");
            Dictionary<stringobject> data = new Dictionary<stringobject>()
            {
                {"MyList.PhoneNumber", FieldValue.Delete }
            }; ;
            docref.UpdateAsync(data);
            MessageBox.Show("Done");
        }
 
        void Delete_An_Element_Inside_An_Array()
        {
            DocumentReference docref = db.Collection("Add_Aray").Document("myDoc");
            Dictionary<stringobject> data = new Dictionary<stringobject>()
            {
                {"My Array", FieldValue.ArrayRemove(456true) }
            };
            docref.UpdateAsync(data);
            MessageBox.Show("Done");
        }
 
        async void Delete_All_Documents_In_A_Collection()
        {
            CollectionReference collref = db.Collection("Testing2");
            QuerySnapshot snap = await collref.GetSnapshotAsync();
 
            foreach (DocumentSnapshot doc in snap.Documents)
            {
                await doc.Reference.DeleteAsync();
            }
 
        }
    }
}
 
 
cs

댓글