按模型或按集合保存在服务器中?

Posted

技术标签:

【中文标题】按模型或按集合保存在服务器中?【英文标题】:save in server by model or by collection? 【发布时间】:2013-05-05 11:00:42 【问题描述】:

我对向服务器发送集合或模型感到困惑。

这是我的模型:

var Person = Backbone.Model.extend(
    defaults : ,
    initialize : function() 
);

这是我的收藏:

var Usercollection = Backbone.Collection.extend(
    model : Person,
    url : 'https://api.parse.com/1/classes/_User/'
);

现在,如果我要在服务器上保存模型,我必须先添加一个集合并在模型上使用保存,还是先添加一个集合并在集合上使用保存?至少,我必须编写一个 ajax 调用来将集合或模型发布到服务器中?

【问题讨论】:

【参考方案1】:

您应该将模型保存到服务器。

保存模型:在模型上调用save(),例如

    var user = new UserModel();    
    user.save(name: 'SJ', age:'35', 
      success: function (user) 
        // I get a model here with id
      
    );

阅读这些链接了解更多信息。

How to save your model data: SO Link Sample code - by Thomas Davis in his screencast @ backbonetutorials.com - Must watch Server side code for wine cellar app

我已经为您提供了服务器端代码的链接,以查看 API 以使事情对您更有意义。希望这会有所帮助!

【讨论】:

好点:如果您查看 Thomas 编写的代码,您就会明白。每当我们将模型保存到后端时,您可以将模型添加到成功处理程序中的集合中,或者您应该获取完整的集合。因此,当您调用获取整个集合时,它会读取您的数据库并制作模型列表并返回该列表。 在 thomas 的代码中,在 user.save() 的成功处理程序中,他重定向到一个新路由,并且在该路由中,他从服务器获取整个集合并再次呈现。所以新添加的模型被添加到集合本身。【参考方案2】:

如果要在模型保存后将模型添加到集合中,则需要在集合上使用.create,它会在集合创建后触发 add 事件。 .

this.collection.create(model.toJSON() , options);

【讨论】:

【参考方案3】:

使用 collection.create();

http://backbonejs.org/#Collection-create

方便在集合中创建模型的新实例。 相当于用属性的哈希实例化一个模型,保存 模型上传到服务器,然后将模型添加到集合中 成功创建。返回新模型。 ...

var Library = Backbone.Collection.extend(
  model: Book
);

var nypl = new Library;

var othello = nypl.create(
  title: "Othello",
  author: "William Shakespeare"
);

【讨论】:

以上是关于按模型或按集合保存在服务器中?的主要内容,如果未能解决你的问题,请参考以下文章

Backbone.js 将模型添加到集合问题

按值传递或按引用传递

按引用传递或按值传递指针容器之间的区别

我应该在哪里更喜欢按引用传递或按值传递?

为啥 iOS7 模拟器无法启动或按预期启动...?

如何更改 UIpickerView 上的元素按下按钮或按下另一个按钮