angularjs - 允许 undefined variable 作为 null 传递到 Firebase

标签 angularjs firebase

有没有办法允许 undefined variable 作为 null 传递给 Firebase?在我的应用程序中,我遇到了很多可能 undefined variable 的情况,这会阻止将整个对象模型添加到 firebase 中。所以我必须检测是否定义了每个潜在变量,如果没有定义则将其设置为 0。如果 Firebase 只接受 0 或 null 的 undefined variable ,事情就会容易得多。

最佳答案

如果初始值为 falsy,您可以使用逻辑 OR 运算符传递 null

ref.set(someValue || null);

你必须记住的是,这里有很多条件会导致 null (0, false, ''undefinedNaN 等)。

或者,您可以编写一个辅助函数,通过更清晰的检查来包装此行为。

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

如果需要,您甚至可以将该函数修补到 Firebase 引用原型(prototype)中。

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);

关于angularjs - 允许 undefined variable 作为 null 传递到 Firebase,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36829228/

相关文章:

java - 如何使用适配器在 Android ListView 中显示 firestore 集合

javascript - TypeError : Object #<Object> has no method 'push' in Angular js Http. 获取请求

angularjs - AngularJs 中的拖放功能

javascript - 使用 ionic 触摸事件更新 moment.js 持续时间

javascript - AngularJS 去抖动未按预期工作

angularjs - 测试 angular.service 也是一个 promise

Firebase.ServerValue.TIMESTAMP 在直接 child_added 上返回不同的值

firebase - 如何在flutter中添加尝试功能?

swift - 迭代 firebase 的子项以查找与用户电话号码匹配的键

java - Firebase 如何通过按键检索数据