无法从Firebase数据库检索数据

时间:2017-05-26 16:34:49

标签: ios swift firebase firebase-realtime-database

我的代码我无法从Firebase检索数据。

当我在Firebase上添加值时,我确实会在我的控制台上看到Firebase数据库中添加的项目。

此外,我创建了监听器.childAdded,我看到Firebase数据库中添加了这些项目。

但是当我致电.value时,它会检索nil结果。

我不知道那里发生了什么。

这是我的代码。

class FirebaseManager {

    var ref: DatabaseReference?
    var database: DatabaseHandle?

    static let shared: FirebaseManager = {
        Database.database().isPersistenceEnabled = true
        return FirebaseManager()
    }()

    private func initFireabase() {
        ref =  Database.database().reference(withPath: AMUtils.getUDID())        
    }

    func addToDB(composition: Composition) {
        initFireabase()
        ref?.child(String(composition.id)).child("id").setValue(composition.id)
        ref?.child(String(composition.id)).child("title").setValue(composition.title)       
    }

    func removeFromDb(composition: Composition) {
        ref?.child(String(composition.id)).removeValue()
    }

    func getCompositonFromDB(onResult: @escaping ([Composition]) -> Void){
        initFireabase()
        var compositions: [Composition] = []
        database = ref?.observe(.value, with: { (snapshot) in
            compositions.removeAll()
            let value = snapshot.value as? JSON
            compositions.append(AudioListParser.parseObject(json: value!))
            self.ref?.removeObserver(withHandle: self.database!)
            onResult(compositions)
        })
    }
}

getCompositonFromDB()当我启动视图控制器时我正在调用,即使我在数据库上有值,这也总是零

有谁能告诉我这里做错了什么?

enter image description here

1 个答案:

答案 0 :(得分:0)

你改变了数据库的规则吗? 就像你要进行身份验证一样,你应该为write和read设置not null,如果你没有进行身份验证,那么两者都保持null,因为与上面完全相反可能会导致一些错误!!