Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 数据不使用'保存在主干应用程序中;Firebase.Collection';_Javascript_Backbone.js_Firebase_Backfire - Fatal编程技术网

Javascript 数据不使用'保存在主干应用程序中;Firebase.Collection';

Javascript 数据不使用'保存在主干应用程序中;Firebase.Collection';,javascript,backbone.js,firebase,backfire,Javascript,Backbone.js,Firebase,Backfire,我一直在将我的应用程序从RejectionDB迁移到Firebase,在调用collection.create()时,我遇到了一堵墙,试图保存我的收藏。奇怪的是,我的应用程序中有两个Backbone.Firebase.Collection实例,其中一个能够正确创建新对象。另一个看起来相同的集合无法写入数据,并且不会生成错误消息 我有两个系列,每个系列都有自己的型号: 1) -> 2) ->-> 以下是上述集合/模型的定义: /* Projects Collection - An ordere

我一直在将我的应用程序从RejectionDB迁移到Firebase,在调用collection.create()时,我遇到了一堵墙,试图保存我的收藏。奇怪的是,我的应用程序中有两个Backbone.Firebase.Collection实例,其中一个能够正确创建新对象。另一个看起来相同的集合无法写入数据,并且不会生成错误消息

我有两个系列,每个系列都有自己的型号: 1) -> 2) ->->

以下是上述集合/模型的定义:

/* Projects Collection - An ordered list of Projects */
var ProjectModelFirebase = require('../models/projectModelFirebase.js');

module.exports = Backbone.Firebase.Collection.extend({
    model: ProjectModelFirebase,
    firebase: new Firebase(app.fbUrl),
    initialize: function() {
    }
  });

/* Project Model - data layer for a single Project */

module.exports = Backbone.Firebase.Model.extend({
  firebase: new Firebase(app.fbUrl),
  initialize: function() {
  }
});


/* Shots Collection - An ordered list of Shots */
var ShotModelFirebase = require('../models/shotModelFirebase.js');

module.exports = Backbone.Collection.extend({
    model: ShotModelFirebase,
    firebase: new Firebase(app.fbUrl),
    initialize: function() {
    }
  });

/* Shot Model - data layer for a single Shot */

module.exports = Backbone.Firebase.Model.extend({
    firebase: new Firebase(app.fbUrl),
    initialize: function() {
    }
});
在我的项目路径()中,我通常将集合绑定到视图,并使用模板中的一些输入调用this.collection.create。我能够以这种方式成功地创建项目,它们在我的锻造炉中毫无问题地出现。我从我的路线函数调用视图:

// Display list of latest projects
    projectsCollectionFirebase = new ProjectsCollectionFirebase();
    var projectsView = new ProjectsView({collection: projectsCollectionFirebase});
在我的项目路线()中,我将项目集合绑定到视图,并从Firebase检索项目信息,通常:

// Display a single project
    projectModelFirebase = new ProjectModelFirebase({id: project});
    var projectView = new ProjectView({model: projectModelFirebase});
然后我继续()创建一个新的快照集合:

shotsCollectionFirebase = new ShotsCollectionFirebase();
shotsView = new ShotsView({ collection: shotsCollectionFirebase, project: this.model.get('id') });
快照视图()呈现模板和输入字段,供用户输入快照

从这里,当用户单击“保存”按钮时,我称之为this.collection.create。主干识别新模型并相应地更新视图,但Firebase不会对其进行操作。控制台中有一条错误消息,指出“在Firebase模型上调用Save,忽略”。但我的代码中没有显式调用任何Save

我已尝试打开调试,并注意到“projects”create命令会导致以下消息:

r:0: update {"path":"/projects/test","value":{"shots":null}}
而“快照”集合不会触发“更新”事件

这些文件几乎完全相同。我能发现的唯一区别是,第一个示例一次只加载一个集合,而第二个示例加载一个集合,获取数据,然后加载另一个集合

任何帮助都将不胜感激


您可以在此处的my repo中找到该项目的完整代码:

在“回火”中有两种操作模式,一种是带有带有“Firebase”字样的模型/集合,例如:Backbone.Firebase.Model/Backbone.Firebase.collection;另一种模式使用常规主干集合和模型,但定义了“firebase”属性,覆盖主干
sync()
方法

这两种模式不应混合和匹配。例如,如果您使用的是
主干.Firebase.Collection
,则在对任何模型进行更改时,该集合中的所有模型都将自动与服务器同步(与
主干.Firebase.model
相同)。调用
save
sync
没有任何作用,因为更改会在发生时实时保存和同步


有时,这不是您在应用程序中想要的,例如,您希望用户在将任何内容保存到Firebase之前明确单击保存按钮。在这些情况下,最好使用常规主干集合或模型,并简单地为它们提供
firebase
属性。然后,您需要明确地调用
sync
save
,将本地模型/集合的任何更改放入Firebase

您是否尝试过直接在firebase属性中设置URL,而不是在initialize中设置?我尝试过直接返回URL,这似乎没有什么区别。成功了!我现在发现了一个新错误:“Uncaught TypeError:无法设置未定义的属性”\u remoteAttributes“,这在Firebase尝试加载数据时发生。。。但我很高兴继续解决这个新问题。谢谢你的帮助!!要为遇到此问题的任何其他人添加额外信息,正确的设置是:Collection(Backbone.Firebase.Collection)->Model(Backbone.Model)。这允许集合正确同步。是否仍遇到_remoteAttributes错误?否,我通过将我的收藏设置为firebase.collection,并将我的模型设置为常规主干结构来解决此问题。这是最佳设置吗?