0
有沒有辦法允許未定義的變量以空值傳遞到Firebase?在我的應用程序中,我有很多情況下可能未定義變量,並且阻止將整個對象模型添加到Firebase中。所以我必須檢測每個潛在變量是否已定義,如果不是,則將其設置爲0。如果Firebase只是將未定義的變量作爲0或null接受,那將會容易得多。允許未定義的變量以空值傳遞到Firebase
有沒有辦法允許未定義的變量以空值傳遞到Firebase?在我的應用程序中,我有很多情況下可能未定義變量,並且阻止將整個對象模型添加到Firebase中。所以我必須檢測每個潛在變量是否已定義,如果不是,則將其設置爲0。如果Firebase只是將未定義的變量作爲0或null接受,那將會容易得多。允許未定義的變量以空值傳遞到Firebase
如果初始值是虛假的,您可以使用邏輯OR運算符來傳遞null
。
ref.set(someValue || null);
什麼,你必須記住的是,有很多的,這將導致這裏null
(0
,false
,''
,undefined
,NaN
等)的條件。
或者,您可以編寫一個輔助函數,它將此行爲包裝在一個更清晰的檢查中。
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);
優雅的解決方案.... – Thalaivar
我傳入整個對象的設置,和對象的一些元素是未定義的,有沒有辦法來檢測呢? – Jordash
不是第一次遍歷對象。您可以採用與此處所示相同的原則,並使用它們來創建一個'safeObject'函數,該函數可以消除所有未定義的屬性。 –