2017-06-04 32 views
0

我的應用程序(ionic 1.x and firebase)的常用用法是一次推送一個對象,但可能會出現這樣的情況,即必須將多個對象添加到數據庫中之後。官方文件沒有提到這種情況。這是每次按一個對象的代碼:Firebase和Ionic 1.x - 無法一次向DB添加多個對象

this.addExpenseToDB = function (expense, uid) { 
    var newExpenseKey = firebase.database().ref().child('expenses').push().key; 
    var updates = {}; 
    var keyByDate = "someKey"; 

    updates['/user-data/' + uid + '/' + keyByDate + '/'+ newExpenseKey] = expense; 

    return firebase.database().ref().update(updates); 
}; 

兩個問題,A:我如何可以一次推幾個對象? B如何獲得確認(承諾?回調?)數據已成功保存到數據庫?該文檔同樣缺少以下信息:\

回答

1

您可以扇動一個對象,類似於您現在正在做的事情。首先,你需要傳遞的對象數組添加到數據庫中,然後將它們扇形出像你現在做一個循環:

this.addExpenseToDB = function (arr) { 
    // arr: [{expense: ..., uid: ...}]; 

    var updates = {}; 
    for(var i=0; i<arr.length; i++) { 
     var newExpenseKey = firebase.database().ref().child('expenses').push().key; 
     var keyByDate = "someKey"; 
     updates['/user-data/' + arr[i].uid + '/' + keyByDate + '/'+ newExpenseKey] = arr[i].expense; 
    } 

    return firebase.database().ref().update(updates); 
}; 

push(...)返回一個承諾,所以監聽響應:

this.addExpenseToDB([expense: ..., uid: ...]) 
    .then(response => { 

    }) 
    .catch(error => { 

    }); 

帶回調

this.addExpenseToDB = function (arr, callback) { 
    ... 
    return firebase.database().ref().update(updates, function(error) { 
     callback(error); 
    }); 
} 
this.updated = function(error) { 
    if(error) 
     // error 
    else 
     // success 
} 
this.addExpenseToDB([expense: ..., uid: ...], this.updated); 
+0

感謝您的幫助。我沒有使用'es6',我還能享受'promise'功能嗎? – undroid

+0

是的,寫一個回調。很多關於如何做到這一點的問題。 – theblindprophet

+0

我不確定我是否正確。你能否看到最新的問題? – undroid

相關問題