使用Firebase的官方支持的backbone.js绑定我似乎无法从Firebase中的模型中检索任何数据。
例如,我想获取存储在Firebase参考下的用户#2的所有信息:
https://app.firebaseio.com/users/2
为此,我将使用特定于我的用户的ID创建一个新的用户模型,并在该模型上调用fetch:
var ProfileModel = Backbone.Model.extend( {
initialize: function () {
console.log('Profie Model');
},
firebase: new Backbone.Firebase("https://app.firebaseio.com/users"),
});
var userProfile = new ProfileModel({id: "2"});
userProfile.fetch({
success: function (model, response, options) {
console.log(model);
console.log(response);
console.log(options);
userProfile.set({test: "test value"});
userProfile.save();
},
error: function () {
alert('Something went wrong!');
}
});
在此代码段中,触发了成功回调,但没有数据从Firebase添加到模型中,并且响应以未定义的形式返回。但是,在模型上设置测试值然后调用save()时,数据会正确保存到Firebase中。
我假设urlRoot不需要在模型上设置,因为绑定使用id属性来创建用户#2的路径。
如自述文件中所述,当firebase对象添加到模型或集合时,它会覆盖骨干同步以使用Firebase。在开始深入研究绑定之前,我们将非常感谢任何建议。
答案 0 :(得分:2)
如果您尝试检索的数据尚未由Backfire写入,则无法正确读取数据。如果您尝试读取现有数据,请确保其格式为:
/users
/2
/id: 2
/attribute1: "foo"
/attribute2: "bar"
很可能,您的Firebase中未定义https://app.firebaseio.com/users/2/id
,Backfire无法识别它是否具有有效的模型。
这也是为什么第二次保存数据时,回调会获得正确的数据 - 如果你看一下伪造的数据,你会看到:
/users/2
/id: 2
/test: "test value"
希望这有帮助!