Javascript 如何更新数据库中的整个Backbone.js集合?

Javascript 如何更新数据库中的整个Backbone.js集合?,javascript,backbone.js,backbone.js-collections,Javascript,Backbone.js,Backbone.js Collections,我在数据库中有一个对象列表集合。我可以像这样获取它:collectionModel.fetch 但随后用户更改了该集合上的某些内容。当用户单击保存按钮时,整个收集列表必须在数据库中更新。我想也许我可以先删除旧的,然后用新的创建,但我无法实现。我不能使用update方法,因为在这种情况下,我应该找到哪些集合元素已更改,但我想更新整个列表。我该怎么做?谢谢您的帮助。如果要重置集合,必须指定重置属性 collectionList.fetch({ reset: true, ... });

我在数据库中有一个对象列表集合。我可以像这样获取它:collectionModel.fetch
但随后用户更改了该集合上的某些内容。当用户单击保存按钮时,整个收集列表必须在数据库中更新。我想也许我可以先删除旧的,然后用新的创建,但我无法实现。我不能使用update方法,因为在这种情况下,我应该找到哪些集合元素已更改,但我想更新整个列表。我该怎么做?谢谢您的帮助。

如果要重置集合,必须指定重置属性

collectionList.fetch({
    reset: true,

   ...
});
但我认为最好只是更新一下:

collectionList.fetch({
    remove: false,
    update: true,
    merge: true,

   ...
});

如果要重置集合,则必须指定重置属性

collectionList.fetch({
    reset: true,

   ...
});
但我认为最好只是更新一下:

collectionList.fetch({
    remove: false,
    update: true,
    merge: true,

   ...
});

数据库前面有RESTAPI吗?这就是脊梁骨的工作原理。当JavaScript代码运行model.save时;向该模型的api发出PUT请求

您的问题是关于保存整个集合,因为如果您想保持主干的默认实现,您必须检查集合中的所有模型,并为每个模型调用save

如果要向服务器发出一个请求,则必须在集合中实现一个自定义方法。比如:

MyCollection = Backbone.Collection.extend({
    saveAll: function() {
        var data = this.toJSON();
        return Backbone.$.ajax({
            data: { objects: data },
            url: '/url/in/your/server/to/update/db'
        });
    }
});
这将把集合中所有模型的数组转换为JSON发送到服务器


同样,如果您想让主干网的使用变得简单,您希望服务器端有一个RESTful API。

在该数据库前面有REST API吗?这就是脊梁骨的工作原理。当JavaScript代码运行model.save时;向该模型的api发出PUT请求

您的问题是关于保存整个集合,因为如果您想保持主干的默认实现,您必须检查集合中的所有模型,并为每个模型调用save

如果要向服务器发出一个请求,则必须在集合中实现一个自定义方法。比如:

MyCollection = Backbone.Collection.extend({
    saveAll: function() {
        var data = this.toJSON();
        return Backbone.$.ajax({
            data: { objects: data },
            url: '/url/in/your/server/to/update/db'
        });
    }
});
这将把集合中所有模型的数组转换为JSON发送到服务器


同样,如果你想让主干网的使用变得简单,你需要在服务器端使用RESTful API。

这是一个非常古老的问题,但我有另一种方法,所以我想我会发布它

有时候,我的收藏有很多数据,而服务器并不能获取所有数据。我使用主干集合具有的下划线方法之一解决了这个问题,invoke还依赖于jquery:

MyCollection=Backbone.Collection.extend{ 更新:函数回调{ //在所有模型上调用update方法 $.when.apply$,此.invoke'update'。然后=>{ //完成后,如果已传递,则调用回调方法 ifcallback{ 回调; } }; } };
当集合中包含模型时,可以通过调用collection.update来使用它。类似的方法可以用于创建或删除集合,这应该可以修改以捕获错误,但我没有说明这一点

这是一个非常古老的问题,但我有另一种方法,所以我想我会发布它

有时候,我的收藏有很多数据,而服务器并不能获取所有数据。我使用主干集合具有的下划线方法之一解决了这个问题,invoke还依赖于jquery:

MyCollection=Backbone.Collection.extend{ 更新:函数回调{ //在所有模型上调用update方法 $.when.apply$,此.invoke'update'。然后=>{ //完成后,如果已传递,则调用回调方法 ifcallback{ 回调; } }; } }; 当集合中包含模型时,可以通过调用collection.update来使用它。类似的方法可以用于创建或删除集合,这应该可以修改以捕获错误,但我没有说明这一点