가짜 사용자가 Firebase DB에 추가되었고 테스트 목적으로 DB에서 사용자를 확인할 수 있는지 확인하려고합니다.Firebase 데이터베이스 - 기존 사용자 확인
나는 처음 완벽하게 작동하는 createUserToDatabase()
메서드를 작성했습니다. 존재 여부를 조회 할 목적으로 doesUserExist()
메서드를 작성했지만 여러 번 실행 한 후에는 snapshot
이 반환됩니다. 이 메소드는 호출되지만 실제 Firebase 쿼리는 수행되지 않습니다.
그런 다음 모든 데이터에 대해 간단한 쿼리를 만들기로 결정했습니다. 따라서 test()
입니다. 놀랍게도이 방법은 다른 응용 프로그램에서 이와 비슷한 쿼리 방식을 사용해도 제대로 작동하지 않습니다. test()
에있는 세 가지 방법 중 아무 것도 인쇄하지 않습니다.
import UIKit
import Firebase
import FirebaseDatabase
struct FirebaseNode
{
static let USERS: String = "Users"
}
class MainViewVC: UIViewController
{
static var userName: String?
var databaseRootRef: FIRDatabaseReference!
let currentUser: User = User.sharedInstance
@IBOutlet weak var userNameLabel: UILabel!
override func viewDidLoad()
{
super.viewDidLoad()
databaseRootRef = FIRDatabase.database().reference()
if let userTitle = MainViewVC.userName
{
userNameLabel.text = userTitle
}
else
{
userNameLabel.text = ""
}
}
override func didReceiveMemoryWarning()
{
super.didReceiveMemoryWarning()
}
@IBAction func createButtonAction(sender: UIButton)
{
test()
}
func doesUserExist()
{
databaseRootRef.child(FirebaseNode.USERS).queryEqualToValue(currentUser.uid).observeSingleEventOfType(.Value) { (snapshot: FIRDataSnapshot) in
if snapshot.exists()
{
print("User exists")
}
else
{
print("User doesn't exist")
}
}
}
func test()
{
databaseRootRef.observeSingleEventOfType(FIRDataEventType.ChildAdded) { (snapshot: FIRDataSnapshot) in
print(snapshot)
}
databaseRootRef.observeEventType(.ChildAdded) { (snapshot: FIRDataSnapshot) in
print(snapshot)
}
databaseRootRef.observeSingleEventOfType(.Value) { (snapshot: FIRDataSnapshot) in
print(snapshot)
}
}
func createUserToDatabase()
{
databaseRootRef.child(FirebaseNode.USERS).child(self.currentUser.uid).setValue(self.currentUser.toAnyObject())
}
}
이
내 중포 기지 DB{
"Users":
{
"JglJnGDXcqLq6m844pZ": ---> $uid
{
"userName":"Hello John",
"firstName": "Johnita",
"lastName":"Hernandez",
"email":"[email protected]",
"profileImage": "%uid%.jpeg",
}
}
}
의 구조이며,이 규칙
{
"rules": {
"Users": {
"$uid": {
".read": "$uid === auth.uid",
".write": "$uid === auth.uid",
".validate": "newData.hasChildren(['email', 'firstName', 'lastName', 'userName'])"
}
}
}
}
오류가 전혀 발생하지 나보고 인증 문제입니다 내 현재의 집합입니다.
도움이 될 것입니다.
시뮬레이터를 사용하고 있지 않습니다. 전 시간에 전화로 실행 해왔다. – eshirima