按模型或按集合保存在服务器中?
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"
);
【讨论】:
以上是关于按模型或按集合保存在服务器中?的主要内容,如果未能解决你的问题,请参考以下文章