English 中文(简体)
Backbone - 在收藏 - 服务器侧端中创建多个模型
原标题:Backbone - Create Multiple Models in Collection - serverside

我为用户上传他们自己的数据提供了一个表格。 我使用ajax- form-submit, 然后分析数据来创建许多模型( 在上传 csv 中每行一个)。

现在,我想将模型创建成一个预定义的集合。

我可以使用需要一系列模型的加法, 但不幸的是, 它并没有将 PUSH 发送到服务器一侧 。 我知道我可以复制和创建. 创建每个模型, 但是让我们假设我有 10k 模型, 它会创建 10k 电话。 听起来不合理 。 我错过了什么吗?

另一种方法是在服务器上接受多个模型并使用.ajax调用,然后手工添加到 UI 转换的收藏中。

寻找最好的路线 谢谢

最佳回答

Backbone 和 REST 根本不包括所有真实世界使用的案例, 比如您的批量创建示例 。 它们也没有用于批量删除的官方模式, 这也是非常常见的 。 我对为什么他们拒绝处理这些极为常见的使用案例感到困惑, 但无论如何, 您还是留待您自己在这里做出良好的判断 。 因此, 我建议在您的收藏中添加一个 < code> bulkSave 或 < code> import 方法 。 这应该将 AJAX POST 请求和您的 CSV 格式数据发送到服务器, 服务器应该保存信息, 如果一切顺利的话, 返回新建模型的 JSON 阵列 。 您收集时应该将 POST 响应中的 JSON 阵列转到 < code> sets ( 和 < codecode> parse ) 中, 如果您需要特殊解析的话 。

绝对不要对每个模型(在您的 CSV 中行) 进行 POST 请求, 特别是如果您计划使用 10K 模型。 但是, 很显然, 如果您的 UI 显示实时进度和每部记录处理错误( 比方说节省了65个模型中的23个), 对几十个模型使用这个模式并不完全可怕 。

问题回答

我喜欢@PeterLyons 的务实方法, 但另一个想法可能是试图将您的 non REST 功能转换为 REST 功能。

您想要的是同时创建一组模型。 REST 不允许一次性创建多个资源。 REST 喜欢的是一次 创建 一种资源 。

没有问题, 我们用自己的 url 和 自己的 < em> POST < / em > 动词创建一个新的资源名为 < code> Bulk 。 本模型的 < code > 属性 是您想要创建的模型的数组 。

使用此方法,您还可以同时解决未来功能, 如 < em> modify remove 多重模型 。

现在,你只需要找出如何将模型阵列与这一新模型联系起来,以及如何使 Bulk.toJSON 方法反应得当。





相关问题
What s the appropriate granularity for Backbone.js Views?

I m adopting Backbone.js to render a small corner of an existing large web app. If this goes well, I can see Backbone.js growing to encompass the whole of the app, lending some much-needed structure ...

Rendering Layouts with Backbone.js

If you were to build a single page web application (SPWA) using Backbone.js and jQuery with--for example--two controllers that each required a unique page layouts, how would you render the layout? ...

Load html without refresh

Im unsure of how to approach this, should I have the html to be loaded hidden or load it from somewhere? I want to load a form in one page, and dynamic content on other pages. The form can be saved ...

Why are my CoffeeScript/backbone.js events not firing?

I m trying to familiarize myself with CoffeeScript and backbone.js, and I must be missing something. This CoffeeScript: MyView = Backbone.View.extend events: { "click" : "testHandler" ...