gpt4 book ai didi

javascript - Firebase Backfire : model. set() 不同步到 Firebase

转载 作者:行者123 更新时间:2023-11-29 19:31:49 25 4
gpt4 key购买 nike

我是 Backbone 和 Firebase 的新手。我正在使用 Backfire,有一个集合:

var UsersCollection = Backbone.Firebase.Collection.extend({
model: UserModel,
firebase: new Firebase( "https://xxxxxx.firebaseio.com/users" ),
});

模型本身未绑定(bind)到 Firebase(出现“创建的 Firebase 引用无效”错误):

var UserModel = Backbone.Model.extend({
defaults: function() {
return {
email: "example@example.com"
};
}
});

在我的 View 中,我实例化了集合,我得到了数据,我可以向集合中添加新模型,如下所示:

this.allUsers  = new UsersCollection();
...
this.allUsers.add( userData );

效果很好,新的用户记录出现在 Firebase 上。但是,假设我现在想要获取给定用户的模型并更新其数据:

var userRecord = this.allUsers.findWhere( {email: email} );
userRecord.set( {age: age} );

这会在本地更新模型,但更改后的模型不会同步到 Firebase。之后我尝试了 userRecord.save(); 但它触发了“循环引用”错误。根据文档,set() 应该这样做,但很明显有些地方不对:(

最佳答案

在这种情况下,userRecord 变量返回为未定义,因为 allUsers 集合尚未填充数据。当您调用 .findWhere() 时,数据仍在下载到 Firebase。

为避免这种情况,您可以监听 sync 事件并从那里执行所有操作。

JSBin example .

allUsers.on('sync', function(collection) {
// collection is allUsers
var userRecord = collection.findWhere( {email: 'david@email.com'} );
userRecord.on('change', function(model) {
console.log('changed', model);
});
userRecord.set( {age:4} );
});

在处理对它们的任何操作之前,您需要确保已填充您的集合。 sync 事件是执行此操作的推荐方法。

关于javascript - Firebase Backfire : model. set() 不同步到 Firebase,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27045483/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com