2012-02-25 5 views
1

を「保存」:また、サブビューCarViewを埋め込むPersonView、ありバックボーンリレーショナルとサブビューは、最高のは、私はこのようなバックボーン・リレーショナルを使用している戦略

class window.Car extends Backbone.RelationalModel 

class window.Person extends Backbone.RelationalModel 
    relations: [{ 
     type: Backbone.HasOne 
     key: 'car' 
     relatedModel: Car 
    }] 

私の質問は、ユーザーがPersonViewで「保存」をクリックしたときの最良の戦略は何ですか?問題は、saveが最初に車と人の2つのステップで発生することです。しかし、検証がその人に失敗したらどうしますか?それはセーブをキャンセルしますが、車はすでにセーブされています!

多分、ここではバックボーン・リレーショナルは最適なオプションではありませんか?代わりに?

もっと一般的には、深く組み込まれたドキュメント(私はMongoDBを使用しています)でバックボーンをプレイすることは、もっとうまくいきません。はい、Todoアプリは素晴らしいですが、現実世界はもっと複雑です!ガイダンスやチュートリアルは非常に高く評価されます。

答えて

1

詳細を知らされていなくても答えるのは難しいですが、ブラウザー側にリレーショナルモデルが必要ですか?

バックボーンは安心して使用できるように設計されています。サーバー側のAPIは安心していますか?

あなたの場合(あなたが持っている制約を本当に理解することなく)、私は次の実装を考えることができます。サーバーで

次のURI API:この実装で

[…]/carType/{carType} 
[…]/persons/{person} 
[…]/cars/{car} 

は、「車は」「carTypeは」車のクラスを表す実際の物理オブジェクトを表します。 "car"のバックボーンモデルには、 "carType"のIDと "person"のIDが含まれています。また、 "carType"と "person"のバックボーンモデルもあります。 このように、「人」と「carType」を関連付けるには、新しい「車」を作成してサーバーにPOSTします。 "car"は独自の独立したオブジェクト(独自のURLを持つ)であるため、トランザクション方式で操作することができます(つまり、あなたが求めていると思います)。

私はそれが役に立ち、その答えがあなたが実際にやろうとしているもののそれほど遠くないことを望みます。

0

ベストセーブ戦略は、すべてのものを原子的に(1つのステップで)保存することです。それ以外の場合、サーバーにオブジェクトを1つ保存しないと、サーバーとクライアントの両方で他のオブジェクトを破棄しなければならないという意味で、常にこの種の問題が発生します。

これをサポートするために、Backbone-relationalはネストされたオブジェクトのシリアライズとデシリアライズをサポートしています。

関連する問題