在backbone.js中创建vs修改

时间:2013-01-31 12:56:10

标签: django backbone.js tastypie

这是我的第一个使用骨干和REST API的应用程序,在创建编辑方面,我对某些特定场景感到困惑。因此,如果模型退出服务器,它将编辑,如果它不是它创建。

当我在模型中传递一个唯一标识符时,它知道它会退出,但是如果我传递现有数据的组合而没有唯一标识符,它总是认为它应该是CREATE。我不确定这是否应该在客户端或服务器上解决。

例如:

var exportationMod = new Backbone.Model({ 'asset': '/api/v1/asset/'+this.assetID+'/', 'export_configuration': '/api/v1/exportconfiguration/'+this.model.get('id')+'/' });
exportationMod.url = '/api/v1/exportation/';
exportationMod.save();

好的,所以服务器正在运行django + tastypie。如果客户端通过首先在服务器上进行额外查询来验证这一点(可能有一种方法可以设置像mysql这样的唯一键的组合),还是有其他设置我可以进行调整以便编辑而不是创建? / p>

1 个答案:

答案 0 :(得分:0)

如果您将数据传递给没有唯一ID的服务器,服务器将如何知道要更新的内容?

如果您的情况有意义,可以覆盖模型中的isNew()

var MyModel = Backbone.Model.extend({
   idAttribute: 'somethingUnique',
   url: '/api/v1/exportation/',
   isNew: function(){
      // return true if you want create (POST),
      // return false if you want update (PUT)
   }
});

默认情况下它看起来像这样(使用上面的模型,this.id将是上面的idAttribute值):

// A model is new if it has never been saved to the server, and lacks an id.
isNew: function() {
  return this.id == null;
},

如果要编辑服务器上已存在的内容,则应在编辑/保存之前先获取它。此外,如果有一些未被称为“id”的唯一ID,您也可以在模型上覆盖它(见上文)。