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

标签 javascript backbone.js backbone.js-collections

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

最佳答案

你有那个数据库前面的 REST api 吗?这就是 Backbone 的工作方式。当您的 JavaScript 代码运行 model.save(); 时,系统会向您的 api 发出该模型的 PUT 请求。

你的问题是关于保存整个集合,因为如果你想保留在 Backbone 的默认实现中,你将必须遍历集合中的所有模型并为每个模型调用保存。

如果你想向你的服务器发出一个单一的请求,你必须在你的集合中实现一个自定义方法。像这样的东西:

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 发送到您的服务器。

同样,如果您想让 Backbone 的使用变得轻松,您需要在服务器端拥有一个 RESTful API。

关于javascript - 如何更新数据库中的整个 Backbone.js 集合?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18268806/

相关文章:

javascript - 使用CDN清除页面内容

Javascript 文档.domain

javascript - backbone.js - 处理用户是否登录

javascript - 如何在数字的二进制表示中找到 1 的个数?

javascript - 在 Chrome 扩展中插入图像?

backbone.js - Stackmob 与 require.js

javascript - Backbone.js 模型未传递给 View

javascript - 将参数传递给backbone fetch url以处理非标准api

javascript - 对主干集合中的模型进行排序奇怪的行为

javascript - 使用 Backbone.paginator 进行多个排序查询参数