1

使用 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。在我开始深入研究绑定之前,任何建议都将不胜感激。

4

1 回答 1

2

If the data you are trying to retrieve hasn't been written by Backfire, then the data will not be read correctly. If you are trying to read existing data, make sure it is of the form:

/users
  /2
    /id: 2
    /attribute1: "foo"
    /attribute2: "bar"

Most likely, https://app.firebaseio.com/users/2/id is not defined in your Firebase, and Backfire doesn't recognize it has a valid model.

This is also why the second time you save data, the callback gets the correct data - if you look at the data in forge, you'll see:

/users/2
  /id: 2
  /test: "test value"

Hope this helps!

于 2013-06-11T18:31:52.610 回答