問題タブ [salat]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
scala - Option[Set[A]] にマップされるコレクションをデシリアライズしない Salat
scala-salat Google グループでこの質問をしましたが、数日間応答がなかったため、ここで試してみました。
でラップされたコレクションを持つケースクラスがありOptionます。
ドキュメントはMongoに問題なく保存されます。ただし、findOne( の有無にかかわらずSalatDAO) を使用してこれを取得しようとすると、アドレス フィールドには Address ケース クラスではなく、アドレスを表す JSON テキストが含まれます。
その結果、Lift-JSON はケース クラス内のすべてのフィールドをスキップしますOption[Collection[A]]。を削除して を使用するOptionとaddresses=Set[Address]()、機能します。ただし、JSON にデータのない空のセットが作成され、消費者がエントリを削除したかどうかを更新時に確認する方法がありません。またはSet、消費者がこのフィールドを送信しなかったために空になっています。元のリクエスト。
を使用Optionすると、フィールドが に設定されます。つまり、フィールドNoneが空になったり変更されたりすることを心配する必要はありません。
どんな助けでも大歓迎です。
scala - 埋め込みオブジェクトを更新/削除する方法
次のドメイン モデルが与えられた場合:
これらのオブジェクトをデシリアライズ/デシリアライズするために Salat を使用しています。ただし、削除/更新するオブジェクトのbenefit.idを知っている場合、従業員オブジェクトの福利厚生リストから特定のオブジェクトを削除/更新する方法について少し混乱していますか?
このリストは実行時に多数のオブジェクトを保持する可能性があるため、単一のオブジェクトを更新できるようにするために完全な利点リストを反復したくありません。emp オブジェクトを取得し、目的のオブジェクトが見つかるまでリストを繰り返し、更新してから emp オブジェクトを保存するよりも良い方法はありますか?
scala - Casbah / Salat:文字列の一部が含まれているフィールドをクエリする方法は?
名前の一部が含まれているフィールドをクエリするために、CasbahとSalatを使用してクエリを作成しようとしています。私はこのような正規表現を使用しようとしました(SalatDAO内):
と
レコードはMongoDBにあり、完全な名前で検索すると機能します。
文字列の一部を検索するようにcasbahに指示する正しい方法はどのようになっていますか?
私が修正したいもう1つのことは、パラメーターの文字列連結です。casbahを使用して入力パラメーターをエスケープするデフォルトの方法はありますか?そのため、パラメーターはjavascriptコマンドとして解釈されませんか?
よろしく、オリバー
scala - 正規表現の一致について配列[文字列]を照会する方法は?
正規表現を含む文字列の配列であるフィールドについて、Casbah 経由で MongoDB にクエリを実行しようとしています。
例えば:
フィールドipsに文字列として保存されているipsのリストを持つMaschineがあります。ここで、サブネット 192.168 を持つすべてのマシンを検索したいと考えています。
私にとっては、すべてのエントリに正規表現が適用された配列をクエリすることはできず、エントリの1つがマシンに一致すると返されるようです。
そのようなクエリを作成する方法はありますか?
- 修理済み
ご協力いただきありがとうございます。
すべてが機能するようになりました。最後に、Casbah の 1 つの制限を回避する必要があります。これは、$or を使用してクエリに参加する必要があり、Casbah が正規表現の暗黙の欠落について不平を言うためです。
他のフィールドを追加した RegExp Array クエリの最終的なコードは次のとおりです。
これは最適なコードではなく、パラメーターの文字列連結を修正する必要があります。しかし、それは機能します:)
scala - MongoDBでSalatを使用するときに、compsiteキーを処理するための最良の方法は何ですか?
私はMongoDBでSalatを使用しており、データベースでの重複を避けるために自然キーに変換しようとしています。私が使用しているケースクラスは、次のようになります。
someRelatedId + emailで構成される自然キーを追加し、MongoDBにデフォルトのObjectIdの代わりにそれを使用させたいと思います。ドキュメントから私はそれが可能であると感じます、しかし私はまだ実用的な解決策を模索しています。これは主に、Scala自体に習熟していないことが原因です。
更新:私は今、実用的な解決策を持っていますが、それが最善の方法であるかどうかまだ疑問に思っています
そして、package.scalaで、カスタムのsalatコンテキストにマップします。
このようにして、ドメインクラスに必須の(意味のない)_idフィールドを持たないようにしますが、コンパニオンオブジェクトにapply()をオーバーロードする必要がありますが、これは少し不格好なようです。
scala - mongodbのSalatを使用して「IN」クエリのようなSQLを実行するには?
以下の構造を持つ多くのレコードがmongodbに保存されています。
salatを使用してmongodbで「IN」のようなクエリを実行するにはどうすればよいですか?
例えば
ありがとうパワン
scala - Casbah / Salat でカスタム シリアライゼーションを定義するか、シリアライゼーションをメンバーに委譲しますか?
私は Rails から来た新しいプロジェクトのために Scala を学んでいます。基本的に「属性」のコレクションと考えることができる多くのモデルで使用されるタイプを定義しました。これは基本的に、ほとんどの責任を委任するハッシュマップの単なるラッパーです。
したがってDescription、次のようなを使用してモデル クラスを定義します。
ただし、PersonSalatDAO を使用して永続化すると、次のようなドキュメントになります。
実際には、attributesタグ内のdescriptionタグのネストが必要ない場合-実際に欲しいのはこれです:
私は試していませんが、 aを含むのではなくDescriptiona を拡張した場合、それを機能させることができると思いますが、 aは の型ではないため、それはaおよびそれ自体の他の動作については、後で追加します。継承より合成など。MapDescriptionMapMap
だから私の質問は、どうすれば Salat (または Casbah、私はそれらを使い始めたばかりなので、どちらが変換を行っているかについては実際には少し不明です) に、Descriptionクラスをシリアル化および逆シリアル化する方法を伝えることができますか? ここのcasbahチュートリアルでは、次のように述べています。
独自のカスタム タイプのシリアライザーとデシリアライザーを作成することもできます。カスタムシリアライザーとデシリアライザーを参照してください。
しかし、このページは存在しないようです。それとも、間違った方法で進んでいますか?これが私がやりたいこと、注釈などであることを示す本当に簡単な方法は実際にありますか? または、シリアライゼーションを何らかの方法で属性マップに委任することはできますか?
編集: JodaTime 変換ヘルパーのソースを見た後、次のことを試しましたが、まだ動作させることができませんでした:
呼び出しRegisterCustomConversionHelpers()てから保存するPersonと、エラーは発生しません。効果がなく、これまでと同じ方法でドキュメントを保存します。これはまた、私が望むことのためにしなければならないことがかなり多いようです。
scala - Salatエラー:SalatDAOに必要なクラスファイルがありません。com.mongodb.casbah.TypeImportsの参照型MongoCollectionは、存在しないシンボルを参照します
SalatDAOを拡張しようとしたり、grater [T] .asObject(x)を使用したりしようとすると、次のエラーが発生します。
SalatDAOに必要なクラスファイルがありません。com.mongodb.casbah.TypeImportsの参照型MongoCollectionは、存在しないシンボルを参照します。
私はSalatの例に従いましたが、何らかの理由で、SalatDAOとおろし金asObjectを拡張しても機能しません。このエラーへの参照をオンラインで見つけることができません。
これが私のコードです:
これに関する助けやアドバイスを本当にいただければ幸いです。ScalaとMongodbは初めてです。
sbtcompileを使用してコンパイルしています。これが私のbuild.sbtです
scala - 遊ぶ!フレームワーク2.0scala-ClassCastException:models.MyModelをmodels.MyModelにキャストできません
これは私の最初のPlay2.0アプリであり、scalaはまだ私にとってかなり新しいので、どこかで間違いを犯している可能性があります。SalatとCasbahをバンドルするかなり新しいプラグインを使用しています:https ://github.com/leon/play-salat
すべてを簡略化して名前を変更し、一般的なものにしました。
私の見解(views/MyController/search.scala.html):
私のコントローラー(controllers/MyController.scala):
私のモデル:(models/MyModel.scala):
そして、私はこのエラーを受け取ります:
これは私にはあまり意味がありません-誰かがこのようなことに遭遇したことがありますか?
フルスタックトレース:
scala - コンパニオン オブジェクトを使用して Salat ケース クラス DTO のスコープを管理できますか?
私は、MongoDB とのやり取りのために Play2 webapp 内で Salat を使用しています (Leon Radley のきちんとした SBT プラグインを介して)。うまく機能しますが、ネスト (ネストされた JSON/BSON モデル定義を反映するため) のために多くのケース クラス DTO があるため、ネストされたケース クラス DTO を基本モデル タイプのコンパニオン オブジェクトできちんと定義したいと考えました。
これにより、Salat データ アクセス レイヤーで急増したケース クラス DTO のスープでの名前空間の衝突が防止されます。たとえば、"Description" ケース クラスを定義しますが、別のモデル オブジェクトに対して再定義されるため、適切な方法で名前を付ける必要がありました。この小さなスニペット/例のように、この目的のためにコンパニオン オブジェクトを使用してみました。
これはすべて美しくコンパイルされますが、実行時にcom.novus.salat.util.ToObjectGlitch: 引数の型が一致せず、Mongo からのアンマーシャリング中に失敗します。
コンパニオン オブジェクトの定義をパッケージの定義に単純に切り替えると (DTO スープをカプセル化するやや面倒な方法)、すべて正常に実行されます (アンマーシャリングはうまく機能します)。
オブジェクト内でケースクラスを宣言すると実行時に失敗する理由について混乱しています。オブジェクト内でケース クラス (Salat DTO) を定義するコツはありますか?