2016-04-24 41 views
0

有沒有辦法允許未定義的變量以空值傳遞到Firebase?在我的應用程序中,我有很多情況下可能未定義變量,並且阻止將整個對象模型添加到Firebase中。所以我必須檢測每個潛在變量是否已定義,如果不是,則將其設置爲0。如果Firebase只是將未定義的變量作爲0或null接受,那將會容易得多。允許未定義的變量以空值傳遞到Firebase

回答

5

如果初始值是虛假的,您可以使用邏輯OR運算符來傳遞null

ref.set(someValue || null); 

什麼,你必須記住的是,有很多的,這將導致這裏null0false''undefinedNaN等)的條件。

或者,您可以編寫一個輔助函數,它將此行爲包裝在一個更清晰的檢查中。

function safeSet(ref, val) { 
    if(val == undefined) { 
    ref.set(null); 
    } else { 
    ref.set(val); 
    } 
} 

如果需要,甚至可以將該函數修補到Firebase Reference原型中。

Firebase.prototype.safeSet = function safeSet(val) { 
    if(typeof val == 'undefined') { 
    this.set(null); 
    } else { 
    this.set(val); 
    } 
}; 

這將允許您直接在您現有的Firebase參考上調用safeSet方法。

var ref = new Firebase("myapp.firebaseio.com"); 
var val = [1, 2, 3][-1]; 
ref.safeSet(val); 
+0

優雅的解決方案.... – Thalaivar

+0

我傳入整個對象的設置,和對象的一些元素是未定義的,有沒有辦法來檢測呢? – Jordash

+0

不是第一次遍歷對象。您可以採用與此處所示相同的原則,並使用它們來創建一個'safeObject'函數,該函數可以消除所有未定義的屬性。 –