如果对象附加了函数/方法,如何将Javascript对象保存到Firebase?

时间:2017-01-29 17:18:08

标签: javascript firebase firebase-realtime-database

我正在尝试将javascript对象的数据属性同步到Firebase。但是,当我将方法附加到我的对象时,Firebase会抛出错误:
错误:Firebase.set失败:第一个参数包含属性中的函数

我正在寻找一种很好的干净方式来同步我的对象,而不必删除所有方法,或在对象中创建data属性。

我的Javascript构造函数

var MyClass = function() { 
  this.foo = "bar";  // an example attribute. No problem for Firebase
}

// add a method. Firebase will throw an error because of this method.
MyClass.prototype.myMethod = function () {};

创建新对象

var myInstance = new MyClass();

Firebase抛出错误

firebase.database().ref().set(myInstance);

任何想要干净利落的方法来制作这样的作品吗?

1 个答案:

答案 0 :(得分:2)

这应该可以解决问题:

var json = JSON.parse(JSON.serialize(myInstance));
firebase.database().ref().set(json);

但总的来说,我建议您将代码与数据分开。 Firebase数据库中的对象不应包含函数。