1

这是我第一个使用主干和 REST API 的应用程序,当涉及到创建编辑时,我对一些特定的场景有点困惑。因此,如果模型在服务器上退出,它将编辑,如果它没有创建。

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

例如:

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 + sweetpie 运行。客户端是否应该通过首先在服务器上进行额外的查询来验证这一点(也许有一种方法可以设置唯一键的组合,如 mysql),还是我可以调整其他设置以便编辑而不是创建?

4

1 回答 1

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,您也可以在模型上覆盖它(见上文)。

于 2013-01-31T14:26:33.390 回答