C#/ASP.NET Core

[Blazor] Firestore Array로 저장하기

말하는 닭 2023. 8. 21. 15:44

일전에 Firestore에 데이터를 저장시키는 글을 올렸었다.

이전 글 [Firestore 저장할 때 자료형 주의할 것]

 

[Asp.net core] Firestore 저장할 때 자료형 주의할 거

Firestore에 자료를 저장하려면 FirestoreDb db = FirestoreDb.Create(Project_Id); DocumentReference docRef = db.Collection(Collection_Name).Document(Document_Name); //저장할 때 await docRef.SetAsync(data); //가져올 때 DocumentSnapshot snapsho

ariel.moe

 

여기서는 JsonConvert.SerializeObject()로 저장을 했었는데, 이게 콘솔에서 확인해보니 string형으로 아예 저장이 되어 있었다. 어차피 제대로 작동은 했는데 보기가 조금 힘들어서 array형으로 저장을 해보고 싶었다.

 

다음과 같이 저장할 것이다.

위와 같이 저장하고 싶다

Update (or Set)

DocumentReference documentReference = db.Collection("tags").Document("tags");

// FieldVlaue.ArrayUnion은 Firestore에서 지원하는 자료형이다.
// Update를 통해 하나씩 계속 더할 수 있다.
documentReference.UpdateAsync("tags", FieldValue.ArrayUnion(TagName));

 

Get

DocumentReference tagRef = db.Collection("tags").Document("tags");
DocumentSnapshot snapshot = await tagRef.GetSnapshotAsync();
List<string> tags = new();

var data = snapshot.ToDictionary();
// 위 사진의 경우에는, data에 tags라는 아이템이 하나 뿐이다. 
foreach (var item in data) {
    // 여기서 tags의 items를 하나씩 붙인다.
    foreach (var tag in (List<object>)item.Value) {
        tags.Add(tag.ToString()!);
    }
}

다음 코드로 추가할 수 있다.