2016-09-23 163 views
1

我試圖從Firebase檢索數據並嘗試了不同的解決方案,但快照值正在返回null。數據由「childbyAutoID」創建,我想使用當前的uid檢索它。無法從Firebase檢索數據

Picture from Firebase

以下三種解決方法,我試圖

解決方案1:

NSString *ID = [FIRAuth auth].currentUser.uid; 
    [[[self.databaseRef child:@"User-Subscription"] child:ID] observeSingleEventOfType:FIRDataEventTypeValue withBlock:^(FIRDataSnapshot * _Nonnull snapshot) { 

     NSDictionary *childData = snapshot.value; 
     NSLog(@"%@",childData); //Returns null 
     // ... 
    } withCancelBlock:^(NSError * _Nonnull error) { 
     NSLog(@"%@", error.localizedDescription); 
    }]; 

解決方案2:

NSString *ID = [FIRAuth auth].currentUser.uid; //User ID 
    [[[self.databaseRef child:@"User-Subscription"] childByAutoId] observeSingleEventOfType:FIRDataEventTypeValue withBlock:^(FIRDataSnapshot * _Nonnull snapshot) { 

     NSDictionary *childData = snapshot.value; 
     NSLog(@"%@",childData); //Return null 
     // ... 
    } withCancelBlock:^(NSError * _Nonnull error) { 
     NSLog(@"%@", error.localizedDescription); 
    }]; 

解決方案3:

NSString *ID = [FIRAuth auth].currentUser.uid; //User ID 
    [[[[self.databaseRef child:@"User-Subscription"] childByAutoId] queryEqualToValue:ID]observeSingleEventOfType:FIRDataEventTypeValue withBlock:^(FIRDataSnapshot * _Nonnull snapshot) { 

     NSDictionary *childData = snapshot.value; 
     NSLog(@"%@",childData); //Return null 
     // ... 
    } withCancelBlock:^(NSError * _Nonnull error) { 
     NSLog(@"%@", error.localizedDescription); 
    }]; 

任何幫助指出錯誤是高度讚賞。謝謝。

回答

0

我找到了一個返回數據的解決方案。

[[self.databaseRef child:@"User-Subscription"] observeSingleEventOfType:FIRDataEventTypeValue withBlock:^(FIRDataSnapshot * _Nonnull snapshot) { 

    NSDictionary *childData = snapshot.value; 
    NSLog(@"%@",childData); 
    // ... 
} withCancelBlock:^(NSError * _Nonnull error) { 
    NSLog(@"%@", error.localizedDescription); 
}]; 

但現在問題是,我如何查詢它使用「subs_ID」,如果有2,3個用戶訂閱,由childbyAutoID生成?

+0

我遇到同樣的問題。我試過這個解決方案,我沒有得到結果。有沒有什麼你與databaseRef初始化做什麼?我無法弄清楚我的版本沒有收到帖子的任何其他原因。 –

+0

我沒有做任何與databaseRef初始化,但你也需要認證。因爲我使用FB登錄與Firebase,因此它是自動驗證。你也需要檢查你的孩子的名字是否拼寫正確。 – WasimSafdar