ํ ์ผ์ด ์ฐ๋๋ฏธ์๋...์ด๋ ๋ .. ์คํ๋ฆฐํธ ํ๊ณ ๋ฅผ ํ๋ ๋ ์ด์๋ค..
ํ์์ด ๋งํ๋ค,,"์ ์ฒด ์ง๋ฌธ(Data)์ ํ์ด์ด์คํ ์ด์ ์ ๋ฐ์ดํธํ๋๋ฐ, Document Id๊ฐ ๋๋ค๊ฐ์ผ๋ก ๋ค์ด๊ฐ๊ฒ ๋์ด์."
๊ธฐ์กด์๋ ๋ฌธ์ ์์ด๋๊ฐ ๋ํ๋จผํธ ๋ด๋ถ์ ๊ฐ(์ ์)๋ก ๋์ด์์ด์ ์ด๋ฅผ ๋ถ๋ฌ์จ ๋ค Id๋ก ์ ๋ ฌ์ ํด์ ํ๋ฉด์ ๋ณด์ฌ์ฃผ๊ณ , ๋ฐ์ดํฐ๋ฅผ ๋ถ๋ฌ์ ํ๋ฉด์ ๊ทธ๋ฆฌ๋ ๋ก์ง์ด ์์๋ค.
๋๋ ์๊ฐํ๋ค,,, "์ฅ ๋ถ๋ช ์ฑ์ ๋์์ํ๋ ๋ถ๋ถ์ด ์์ํ ๋ฐ,," ํ๊ณ ๋ฐ๋ก ์ฑ์ ์ผ์ ํ์ธํด๋ณด๋ "์ถ์ฒ์ง๋ฌธ"๊ธฐ๋ฅ์ด ๋์ํ์ง ์๊ณ , ๋น ํ๋ฉด์ผ๋ก ๋ด๋น๊ฒ์ด์ ๋๋ ์ด์,,๋ฅผ ํ์ธํ๋ค.
ํ๊ณ , ํ์๊ฐ ๋ชจ๋ ๋๋๊ธฐ ์ ,
์ ์ ๊ฐ ํ์ฌ ์ฌ์ฉํ๊ณ ์๋ ์ํฉ์ด๋ ๋ก์ง์ ์์ ํด ๋น ๋ฅด๊ฒ ๋ฆด๋ฆฌ์ฆ ํ๊ฑฐ๋, ํ์ด์ด์คํ ์ด ๋๋น๋ฅผ ์์ ํด์ ๋น ๋ฅด๊ฒ ํด๊ฒฐํด์ผ ํ ๊ฒ ๊ฐ๋ค๊ณ ์๊ธฐํ๋ค.
์ด์ฉ๋ค ๋ณด๋ ๋ด๊ฐ ํ๊ฒ ๋์๋ค. ๋ ํ ์ผ ๋ง์๋ฐ,,,,,,,,,,,,,,,,,,,,,,,,,
ํ์ ๋๋์๋ง์ ์ฐพ์๋ณด๊ณ ํด๊ฒฐํ ๊ณผ์ ์ ์งง๊ฒ ๋จ๊ธฐ๋ ค๊ณ ํ๋ค.
์ด๋ฐ ๋ฌธ์ ๋ฅผ ๋ค๋ค๋ณด์ง ๋ชปํ๋ ๋๊ตฐ๊ฐ๋ ์ด ๊ธ์ ๋ณด๊ณ ์ข ๋ ์ผ์ฐ ์ด์๋ฅผ ํด๊ฒฐํ๊ธฐ ๋ฐ๋ผ๋ ๋ง์์ผ๋ก - !
์ด์๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ์ด ๊ธ์ ์ฝ๋๋ค๋ฉด ๊ผญ ํ ๋ฒ ์ ๋ ํ ์ดํ ์ ์ฉํ๊ธธ ๋ฐ๋๋ค!
์ฒ์์ ์ด๋ป๊ฒ ์ ๋ฐ์ดํธ ํ๋ ๊ณผ์ ์ ๊ฑฐ์ณค๋์ง ํ ๋ฒ ๋ฌผ์ด๋ณธ ๋ค์์, ๊ทธ ๊ณผ์ ์์ ID ์์ฑํ๋ ๊ฒ์ ๋ฐ๊ฟ ์ ์๋์ง ํ์ธํด๋ณด๋ คํ๋ค.
๊ทผ๋ฐ ์ด๊ฑด ์ด๋ฏธ ํด๋ดค์ ๊ฒ ๊ฐ์์ + ๋ฐค์ด์ด์ ๋ต๋ณ์ด ๋ฆ์๊น๋ด + ๋ด ์ ์์ ํด๊ฒฐํ๊ธฐ์ํด ํผ์ ํด๊ฒฐํ ์ ์๋ ๋ฐฉ๋ฒ์ ์ฐพ์๋ณด์๋ค.
๐ฌ ๋ณ๊ฒฝ ๋ด์ฉ ( AS-IS, TO-BE)
ํ์ด์ด์คํ ์ด๋ Document Id๊ฐ ๊ณ ์ ๊ฐ์ด๊ธฐ ๋๋ฌธ์ ์์ฑํ ์ดํ์ ํ์ด์ด๋ฒ ์ด์ค์ ์ฝ์์์ ๋ฐ๊ฟ ์ ์๋ค..
๋์ Document๋ฅผ ์ํ๋ ์์ด๋๋ก ๋ณต์ ํ๊ณ , ๊ธฐ์กด Document๋ฅผ ์ง์์ ์์ด๋๋ฅผ ๋ณ๊ฒฝํ ์ ์๋ค...!
์ด ์์ด๋์ด๋ฅผ ๊ฐ์ง๊ณ , ์ด์ ์ ์ฐ์ต์ผ์ ๋ง๋ค์๋ ๋ฉ์ ์ ํ๋ก์ ํธ์์ ๋จผ์ ํ ์คํธ ํด๋ดค๋ค.
user ์ปฌ๋ ์ ์ ์๋ ๋ฌธ์์ ์์ด๋๋ฅผ ๋๋ค๊ฐ์ด ์๋ ํด๋น ๋ฌธ์์ emailํ๋ ๊ฐ์ผ๋ก ๋ฐ๊พผ user ์ปฌ๋ ์ ์ ์๋ก ์์ฑํ ๊ฒ์ด๋ค!
๐ฌ ์ ๋ฐ์ดํธ ์์
์ ๋ฐ์ดํธ ์์๋ ๋ค์๊ณผ ๊ฐ์ด ์งํํ๋ค.
๋ณธ ํ๋ก์ ํธ์์ ์ค์ ๋ก ๋ถ๋ฌ์ค๊ณ ์๋ ์ปฌ๋ ์ ๋ช ์ด "user"์ผ ๊ฒฝ์ฐ,
1. ํ๋จ์ ๋ฉ์๋๋ก "user"์ปฌ๋ ์ ์ ๋ฐํ์ผ๋ก "userWithId"๋ก ์์ฑ
2. Firestore ์ฝ์์์ "userWithId" ์์ฑ ํ์ธ
2. Firestore ์ฝ์์์ "user" ์ปฌ๋ ์ ์ญ์
3. ํ๋จ์ ๋ฉ์๋๋ก "userWithId"์ปฌ๋ ์ ์ ๋ฐํ์ผ๋ก "user"๋ก ์์ฑ
๐ฌ ํ์ฉํ ๋ฉ์๋
๋๋ ์๋์ ๋ฉ์๋๋ฅผ ์ฌ์ฉํด์ ์์ ํด์ฃผ์๋ค.
์ฝ๋๋ฅผ ์ฌ์ฉํ ๋ collectionOld์, collectionNew๋ฅผ ์ ์ ์ด์ฃผ๊ณ ,
ํ๋จ์ ๋ฐ์ดํฐ๊ฐ ๊ฐ์ ธ์ค๋ ๋ถ๋ถ์์ ํ๋ ํ์ ์ ์ ํ์ธํด์ ์บ์คํ ํด์ฃผ์ !-!
ํ๋ ํ์ ์ด String์ด ์๋๋ผ๋ฉด ๊ทธ ์ฝ๋ ํ๋จ์ ๋ํ๋จผํธ์ Id๋ฅผ ๋ถ์ฌํ ๋ String์ผ๋ก ์ ๋ณํ์์ผ์ฃผ์!!
func makeNewWithId() {
FirebaseApp.configure()
// Firestore ์ธ์คํด์ค ๊ฐ์ ธ์ค๊ธฐ
let db = Firestore.firestore()
// collectionOld์ collectionNew์ ์ด๋ฆ ์ ์
let collectionOld = "user" // ๐ ๏ธ ๋ณ๊ฒฝ ๐ ๏ธ
let collectionNew = "usersWithEmail" // ๐ ๏ธ ๋ณ๊ฒฝ ๐ ๏ธ
// collectionOld์์ ๋ฌธ์ ๊ฐ์ ธ์ค๊ธฐ
db.collection(collectionOld).getDocuments { (querySnapshot, error) in
if let error = error {
print("Error getting documents: \(error)")
} else {
// ๊ฐ ๋ฌธ์์ ๋ํด ๋ฐ๋ณต
for document in querySnapshot!.documents {
// ๊ธฐ์กด ๋ฌธ์ ๋ฐ์ดํฐ
let data = document.data()
// "email" ๊ฐ์ ๊ฐ์ ธ์ค๊ธฐ
if let emailId = data["email"] as? String { // ๐ ๏ธ ๋ณ๊ฒฝ ๐ ๏ธ
// ์๋ก์ด collectionNew์ ๋ฌธ์ ์ถ๊ฐ
db.collection(collectionNew).document(emailId).setData(data) { error in // ๐ ๏ธ ๋ณ๊ฒฝ ๐ ๏ธ
if let error = error {
print("Error adding document to collectionNew: \(error)")
} else {
print("Document added to collectionNew with ID: \(emailId)")
}
}
}
}
}
}
}
๐ฌ ์ฃผ์์ฌํญ
์์์ ์ธ๊ธํ๋ ๊ฒ ์ฒ๋ผ ์ด ๋ ํ๋์ ํ์ ์ ํ์ธํด์ ํ์ ์ ์ ์ ์ด์ฃผ์ด์ผํ๋ค!!
์ด ์ฝ๋๋ฅผ ๊ทธ๋๋ก ํ ์คํธ ํ๋ก์ ํธ์์ ๋ณ๊ฒฝ์ด ์ ๋ผ์ ๋ณธ ํ๋ก์ ํธ์ ์ ์ฉํ๋ คํ๋๋ฐ, ์๋ก์ด ์ปฌ๋ ์ ์ด ์ถ๊ฐ๊ฐ ์๋์ด์,, ๋นํฉํ์๋ฐ,,,
์ ์๋ ๊น,, ๋๋ฒ๊น ํ๋ฉด์ ํ์ธํด๋ณด๋๋ฐ,, ์ ๋ค์ด์ค๋๋ฐ email ๊ฑธ๋ ค์ง๋ ๊ฒ์ ํ์ธํ ์ ์์๊ณ ,
ํ ์คํธ ํ๋ก์ ํธ์์ id๋ก ํ๋ คํ๋ ํ๋ ๊ฐ์ String์ด์์ง๋ง, ๋ณธ ํ๋ก์ ํธ์์ id๋ก ํ๋ คํ๋ ํ๋ ๊ฐ์ Int์๋ ๊ฒ์ด๋ค!,,,,,,
๊ทธ๋์ ์๋์ ๊ฐ์ด ์์ ํด์ ๋ณธ ํ๋ก์ ํธ์ ์ ์ฉํ๋ค!
if let questionId = data["q_id"] as? Int {
// ์๋ก์ด ์ปฌ๋ ์
์ ๋ฌธ์ ์ถ๊ฐ
db.collection(collectionNew).document(String(questionId)).setData(data) { error in
if let error = error {
print("Error adding document to collectionNew: \(error)")
} else {
print("Document added to collectionNew with ID: \(questionId)")
}
}
}
์ด์ธ์ ๊ณ ๋ คํ๋ ๋ถ๋ถ๊ณผ ๋ณ๊ฒฝ์ด ์ ์ฉ๋์ง ์๋ ์ด์ , ์ฃผ์ํ์ผ๋ฉด ํ๋ ์ฌํญ์ ๋ค์๊ณผ ๊ฐ๋ค!!
* ๋ณธ ํ๋ก์ ํธ์ ์ ์ฉํ๊ธฐ ์ ์ ํ ์คํธ ํ๋ก์ ํธ์์ ๋จผ์ ํด๋ณด๊ธธ !
* ํ์ ํ์ธ ์ ํ๊ธฐ !
* ํ์ด์ด์คํ ์ด ๊ท์น ํ์ธํ๊ธฐ ! ํ์ธํด์ ์ง๊ธ ์ํฉ์ ์ด๊ธ๋๋ ๊ท์น์์ ์ฝ๋๋ฅผ ์คํํ์ง ์์๋ ํ์ธํ์๊ธธ--!
* ํ์ด์ด์คํ ์ด ์ฝ๊ธฐ,์ฐ๊ธฐ ํ๋ฃจ ์ฌ์ฉ๋ ์ ํ์ธํ๋ฉด์ ํ ์คํธ, ์ ์ฉํ๊ธฐ!
๋ฌผ๋ก ์ด ํด๊ฒฐ ๋ฐฉ๋ฒ(?)์ ๊นํ ์ํค์ ์ฌ๋ ค๋๊ธด ํ๊ฒ ์ง๋ง,,
๋ค์์ DB ์ ๋ฐ์ดํธํ ์ํฉ์ด ์์ ๋๋ ์ถฉ๋ถํ ํ ์คํธํ๊ณ ์ค์ DB์ ์ ์ฉํด๋ฌ๋ผ๊ณ ๋ถํํด์ผ๊ฒ ๋ค,,