2016-09-05 3 views
0

Я фиктивные пользователи добавлены в мою базу Firebase и для тестирования. Я пытаюсь проверить, могу ли я проверить пользователя в БД.База данных 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()) 
} 
} 

Это структура моего Firebase 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'])" 
     } 
    } 
    } 
} 

ошибка не отбрасывается вообще или какие-либо проблемы сообщенные AUTH.

Любая помощь будет принята с благодарностью.

ответ

0

Я установил FIRDatabase.setLoggingEnabled(true) внутри viewDidLoad, который помог зарегистрировать все происходящие события по запросу. В конце этой базы в базу данных вернулись следующие JSON

[FirebaseDatabase] Got data message: { 
    b =  { 
     d = "Permission denied"; |-----> Root of ALL EVIL :) 
     s = "permission_denied"; | 
    }; 
    r = 4; 
} 
0

Хм ... похоже правильный.

Вы используете это на симуляторе?

Если это так, не используйте Firebase Apps на симуляторе. Я не знаю, что, но когда я нахожусь на симуляторе, запросы Firebase не работают в 20-30% случаев. У меня никогда не было проблемы с телефоном. Я сделал много проектов с Firebase, и каждый раз, когда я нахожусь на симуляторе, база данных просто перестает работать хотя бы раз в день для карманов времени.

Надеюсь, что это поможет.

Я лично использую:

ref.observeEventType(.ChildAdded, withBlock: { snapshot in 
     print(snapshot) 
}) 

, которые у вас уже есть в списке.

+0

Я не использую симулятор. Проводил его по телефону все время – eshirima

Смежные вопросы