坚持骨干模型和身份证

时间:2014-06-19 09:55:38

标签: backbone.js

让我们假设我们创建一个新的模型类,使用它来实现一个人:

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。但谁应该在客户端更新模型?

由于

2 个答案:

答案 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 ,您的模型将自动更新