2017-02-18 28 views
1

我的Web应用程序中有一个简单的表单,它将JSON对象保留到我的Firebase数据库中。并非每个字段都是必需的,所以当发送的对象被构​​建时,它可能有几个undefined属性。使用Firebase处理未定义的值

由于Firebase在尝试坚持undefined值时会引发错误(更不用说,您不应该在JSON对象上有undefined值),我想知道是否有框架提供的任何方法来覆盖所有未定义值为null甚至是空字符串;我还没有找到在线解决方案。

最坏的情况,我可以手动设置所有未定义的属性null但我宁愿这样做

对此有何意见或建议?

非常感谢!

回答

1

我不相信这有什么特别的方法,因为JSON的性质期望传入一个值,在这种情况下可以是'null'或空字符串。

不幸的是,现在可能是这样,我认为最好在客户端处理这个问题,如果没有数据输入,手动添加'null'或空字符串。然后,您可以稍后使用类似'snapshot.val()!== null'的方式在Firebase中的该位置测试数据。

3

我的解决办法是简单地stringify()replacer合并对象全部更换不定值

obj = JSON.parse(JSON.stringify(obj, function(k, v) { 
    if (v === undefined) { return null; } return v; 
})); 

然后我将其转换回对象与JSON parse()