2017-01-22 84 views
2

於是我進口PromiseKit,然後嘗試如何在Swift中使用PromiseKit和Firebase?

​​

顯然,這不工作,我想知道我缺少什麼,使承諾與火力地堡工作,如果它甚至有可能。我試圖完成的是使用單個捕獲方法一次刪除四個Firebase引用。

隨着我的NodeJS很容易使用:

Promise.all ([ 
someRef.remove(), 
someRef.remove(), 
someRef.remove(), 
someRef.remove() 
]).then (function({ 

}).catch({ 
//handle error 
}) 

有沒有辦法在斯威夫特都做到這一點?

+1

這個問題有點模糊,因爲它不是明確的用例是什麼;您的情況下Promise和Firebase之間的相關性如何? Firebase已經是異步的了,所以有許多方法可以以同步方式和異步方式刪除子節點。看到我的答案在這裏,因爲它可能會幫助[刪除幾個子值](http://stackoverflow.com/questions/38462074/using-updatechildvalues-to-delete-from-firebase/38466959#38466959) – Jay

+0

我不知道我可以那樣做,那真的有幫助的人! – Ryan

+0

我正在尋找類似的東西......我最終做的是使用泛型的小型「PromiseKit」...如Promise ,並且當快照被填充時,它會在視圖上調用委託並填充信息。 .. –

回答

1

你可以用火力地堡的功能與實現,並拒絕

/// Get chat IDs of user conversations 
/// 
/// - Returns: array of user chat IDs 
private func getUserChatIds() -> Promise<[String]> { 

    return Promise { fulfill, reject in 
     let userChatIDsRef = Database.database().reference() 
      .child(FireDatabasePaths.UserInfoPath.rawValue) 
      .child(userID).child("chatIDs") 

     userChatIDsRef.observe(.childAdded, with: { snapshot in 

      if let chatIDdic = snapshot.value as? [String: AnyObject] { 
       let keys = Array(chatIDdic.keys) 
       fulfill(keys) 
      } else { 
       reject(FirebaseError.empty) 
      } 

     }) 
    } 
} 
相關問題