2016-08-25 53 views
0

這是我必須設置一些數據的代碼:火力地堡不與瀏覽器的API設置數據

firebase.database().ref(key).set(val); 

返回

Promise {[[PromiseStatus]]: "pending", [[PromiseValue]]: undefined} 

這表明,我可以通過它再/ catch處理程序,但寫作:

log = function(x) {console.log(x) 
firebase.database().ref(key).set(val).then(log).catch(log) 

具有完全相同的效果(不返回任何結果/打印兩種方式)

奇怪的是,這是間歇性的工作,我只是無法弄清楚爲什麼。

+0

我經常使用這些API,包括像你這樣的承諾。你在什麼環境下運行代碼?你能設置一個再現問題的jsbin,以便我可以試試嗎? –

+0

@FrankvanPuffelen看起來'set'不會返回任何東西,即使在諾言中,但它確實有效。它實際上是將價值傳遞給承諾。 –

回答

1

.set.update都是可靠的。

function update(node,key,value){ 
    var ref = firebase.database().ref('/'); 
    var obj = {}; 
    obj[key] = value; 
    ref.child(node).update(obj) 
    .then(function() { 
     console.log('Update Ran Successfully'); 
    });  
}