我是Backbone和Firebase的新手。我使用的是事与愿违,有一个集合:Firebase Backfire:model.set()未同步到Firebase
var UsersCollection = Backbone.Firebase.Collection.extend({
model: UserModel,
firebase: new Firebase("https://xxxxxx.firebaseio.com/users"),
});
模型本身是不依赖于火力地堡(是越来越“无效的火力地堡参考建立”错误):
var UserModel = Backbone.Model.extend({
defaults: function() {
return {
email: "[email protected]"
};
}
});
在我看来,我实例收集,和我得到的数据好了,我可以添加新的模式,以收集,如下所示:
this.allUsers = new UsersCollection();
...
this.allUsers.add(userData);
伟大的作品,新的用户记录出现在火力地堡。然而,假设我现在要抓住给定用户的模型,并更新其数据:
var userRecord = this.allUsers.findWhere({email: email});
userRecord.set({age: age});
这在本地更新模型,但更改的模型没有得到同步到火力地堡。之后我尝试了userRecord.save();
,但它触发了“循环引用”错误。每文档,set()
应该这样做显然毛刺东西掉:(
所以真正的问题是为什么.save()返回循环引用错误,因为清楚地调用set()不会将更改持久化到Firebase。 – Kato 2014-11-20 18:59:53
调用.set()会在0.4版本中保留对Firebase的更改。我运行了相同的代码,并且能够坚持到Firebase。你用什么作为你的userData变量? – 2014-11-20 21:50:35
使用用户数据是相当简单的,有一层嵌套: '{ “ID”: “-JDFx3e ..”, “电子邮件”: “[email protected]”, “名”: “皮特”, “事件”:{ “-Jxfe ..”:{ “数量”:2 }, “-JzDa ..”:{ “数量”:1 } } }' 添加()收集工作正常。但是当我尝试在提取的模型上设置()时,例如userRecord.set({events:events}),该操作在本地模型上工作,但不会“持久”到我的Firebase。是一个标准的Backbone模型在这里好吗,还是我需要'Backbone.Firebase.Model.extend()' - 有点不确定何时使用它。 – pete 2014-11-21 00:35:40