让我们假设我们创建一个新的模型类,使用它来实现一个人:
var User = Backbone.Model.extend({
urlRoot: '/user'
});
var nou = new User({
name: "nourdine"
});
现在,我们当然希望坚持下去。未添加id
主干将创建POST请求,并向服务器传达在/user
下创建包含数据{name: "nourdine"}
的实体的意图。我们就是这样做的:
nou.save(null, {
success: function (model, response, options) {
// ... what do I do here?
}
})
服务器现在将在db中创建一条记录,其中包含以某种形式重新排列的JSON数据并为其分配ID。 NOW:
1 - 服务器假设在HTTP响应中返回什么?一个JSON,包含clinet提供的JSON +新创建的字段,即新记录的ID?
2 - 谁将使用这些数据更新客户端中的模型?我?事实上,我想告诉客户端模型已经由服务器分配了一个新ID,以便下次我user.save()
时,我将获得PUT而不是POST。但谁应该在客户端更新模型?
由于
答案 0 :(得分:0)
所以这是我的工作流程
client -> create model and populate with data
client -> save model (model.save())
server -> create server side version of model using data, assign an id
server -> respond with success and the id of the newly created model
client -> in the success set the id to the one passed back
现在我的工作流程中唯一的潜在问题是,如果某些内容未成功设置在服务器中但模型仍然创建,我的客户端模型将不再反映服务器的模型,但我通过返回最小化如果无法完全按原样创建模型,则会出错。
现在我能够再次调用model.save(),这样就可以启动PUT请求了
答案 1 :(得分:0)
从文档到Backbone.Model
After a successful server-side save, the client is (optionally) updated with the server-side state.
因此,如果您返回有效 JSON ,您的模型将自动更新