
import Firebase
/**
snapshotでリアルタイム更新の処理を作成
*/
func addEventListener_realtime()->Void{
}
func FirebaseTest()->Void{
// FirestoreのDB取得
let db = Firestore.firestore()
// personsコレクションを取得
db.collection("hairdresser_menu").getDocuments() { collection, err in
// エラー発生時
if let err = err {
print("Error getting documents: \(err)")
} else {
// コレクション内のドキュメントを取得
for document in collection!.documents {
print(document)
}
}
}
}
// Firestoreへのデータ書き込み
func firestore_set()->Void{
let db = Firestore.firestore()
db.collection("hairdresser_menu")
.document("menu") // menuというドキュメントで生成。ここはユーザーIDとかでも良いね!
.collection("prefectures") // サブコレクションであるprefecturesがない場合、自動でリストが生成される。
.document("osaka")
.setData(["capital": "osaka","specialty": "takoyaki"]
) { err in
if let err = err {
print("Error writing document: \(err)")
} else {
print("Document successfully written!")
}
}
}
// Firestoreへのデータ書き込み(一回読み込ませておくと、以下の指定したcollection内で値の変更があれば再度処理。
func realtime_firestore_get()->Void{
let db = Firestore.firestore()
db.collection("hairdresser_menu").addSnapshotListener { (documentSnapshot, error) in
// ドキュメントスナップショットの取得に失敗した場合はエラー内容を表示
guard let documentSnapshot = documentSnapshot else {
print("Error fetching document: \(error!)")
return
}
// 対象ドキュメントの変更内容
documentSnapshot.documentChanges.forEach{ diff in
if (diff.type == .added){
print("ドキュメントが追加された場合")
}
if (diff.type == .modified){
// 更新された値を取得
db.collection("hairdresser_menu").document("menu").getDocument { (snap, error) in
if let error = error {
fatalError("\(error)")
}
guard let data = snap?.data() else { return }
print(data)
}
print("ドキュメントが変更された場合")
}
if (diff.type == .removed){
print("ドキュメントが削除された場合")
}
}
print("リスナーをアタッチして、コールバックを受け取った。")
}
}
// Firestoreからのデータ取得
func data_get()->Void{
let db = Firestore.firestore()
let docRef = db.collection("hairdresser_menu").document("menu") // ユーザーIDで取得
// ドキュメント取得
docRef.getDocument { (document, error) in
if let document = document, document.exists {
let dataDescription = document.data().map(String.init(describing:)) ?? "nil"
print("Document data: \(dataDescription)")
} else {
print("Document does not exist")
}
}
// サブコレクション取得
docRef.getDocument { (collection, error) in
if let collection = collection, collection.exists {
let dataDescription = collection.data().map(String.init(describing:)) ?? "nil"
print("Document data: \(dataDescription)")
} else {
print("Document does not exist")
}
}
}