我將虛擬用戶添加到我的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())
}
}
這是我的火力地堡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