具有多个更新路径的骨干用户模型

时间:2013-06-25 10:28:36

标签: javascript node.js backbone.js

我在Backbone中构建了一个简单的用户模型

define([
  'underscore',
  'backbone'
], function(_, Backbone) {

   var UserModel = Backbone.Model.extend({
      urlRoot: '/api/user',
      idAttribute: '_id',
      defaults: {
         userName: '',
         password: ''
         personalDetails: {
         title: '',
         name: {
           firstName: '',
           lastName: ''
         },
         gender: '',
         dob: ''
       }
    }
 });

 return UserModel;
});

在模型上调用save()会向/api/user/:id发出PUT请求,这很好。

但是,在前端我想要3个表单 - updatePersonalDetailsupdateUserNameupdatePassword

使用我当前的实现,这些将全部使用相同的模型,并且所有save()使用相同的端点/api/user/:id。我的问题是我不知道用户发布了哪种形式。

这个问题的最佳解决方案是什么,同时仍然符合RESTful标准?有3个单独的模型 - UserDetailsModelUserPasswordModel等?或者只是对整个模型进行批量更新,无论用户发布的是哪种形式。

1 个答案:

答案 0 :(得分:2)

在问题评论中讨论过关于模型分离与模型BULK的分析,我没有任何补充。

关于理解UPDATE请求表单源的需要,您可以使用查询字符串参数:

只是POST / api / user / 1?form = my_special_form

在主干中,您只需要使用url选项保存模型

model.save({}, {
  url: model.url() + "?form=my_special_form"
});