1

これはバックボーンとRESTAPIを使用する私の最初のアプリケーションであり、作成-編集に関していくつかの特定のシナリオと少し混乱しています。したがって、モデルがサーバー上に存在する場合は編集し、そうでない場合は作成します。

モデルで一意の識別子を渡すと、それが存在することがわかりますが、一意の識別子のない既存のデータの組み合わせを渡すと、常に作成する必要があると見なされます。これをクライアント側で解決する必要があるのか​​、サーバーで解決する必要があるのか​​わかりません。

例えば:

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();

OK、サーバーはdjango+tastypieで実行されています。これは、サーバー上で最初に追加のクエリを実行することによってクライアントによって検証される必要がありますか(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 に答える