私は Scala、Salat、Casbah、Mongo、Play2、BackboneJS を使用したプロジェクトに取り組んでいます...しかし、同時に学ぶべき新しいことはかなりたくさんあります... Scala は問題ありませんが、自分のコードを見つけましたくだらないし、それを改善するための解決策が本当にわかりません。
基本的に私のユースケースは次のとおりです。
- MongoDB オブジェクトは、Play2 によってブラウザの JS コードに送信されます
- JS コードはオブジェクト データを更新します (バックボーン モデルを介して)
- JS は更新された JSON をサーバーに送り返します (Backbone save メソッドによって送信され、json ボディパーサーを使用して Play によって受信されます)。
- Play が受け取った JSON は MongoDB のオブジェクトを更新するはずです
- 一部のフィールドは、セキュリティ上の理由から更新できないようにする必要があります (オブジェクト ID、作成日など)。
私の問題は最後の部分です。MongoDB に格納されているオブジェクトの表現として Salat でケース クラスを使用しています。
JS コードから受け取った JSON を処理する方法がよくわかりません。
JSON を Salat ケース クラスにバインドし、Mongo に完全な新しいケース クラス オブジェクトで以前のオブジェクト データをオーバーライドするように依頼する必要がありますか? その場合、Play2 または Salat を使用して、受信した JSON からケース クラスを自動的に作成する方法はありますか?
更新するフィールドに $set を使用して、JSON フィールドを個別に処理する必要がありますか?
ケース クラスの要素を変更可能にする必要がありますか? たとえば、Hibernate を使用して Java で実際に行っていることは、DB からオブジェクトを取得し、その状態を変更して保存することです。しかし、それは Scala を扱う適切な方法ではないようです...
何をすべきか本当にわからないので、誰かが私のユースケースについてアドバイスをくれるといいですね:(
編集: ここで関連する質問をしました:データベース データを不変または可変のデータ構造で表す必要がありますか?