ios – 如何在Swift中使用带Firebase的PromiseKit?

所以我导入PromiseKit然后尝试

 FIRDatabase.database().reference().child("somechild").removeValue().then  {
///// 
}

显然,这不起作用,我想知道我还缺少什么使得承诺与Firebase一起使用,如果它甚至可能的话.我想要完成的是使用单个catch方法一次删除四个Firebase引用.

使用nodeJs,我很容易使用:

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

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

有没有办法在Swift中实现这一点?

最佳答案 您可以使用履行和拒绝来包装Firebase功能

/// 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)
            }

        })
    }
}
点赞