1

バックエンドで MongoDB を使用する Ruby JSON サービスの代わりとして Yesod アプリを作成しようとしていますが、問題が発生しています。

  1. モデル ファイルの sql=foobar 構文は、Persistent.MongoDB が使用するコレクションにあまり影響を与えないようです。どうすればそれを変更できますか?
  2. mongodb を (できれば yaml ファイルを介して) 明示的に読み取り専用に簡単に構成する方法はありますか? アプリが本番データを上書きしたり破損したりする可能性がないことを知っていれば、これを展開するのがより快適になります.
  3. Persistent.MongoDB が知らないフィールドを無視する方法はありますか? このサービスは、問題のコレクション内のフィールドの一部のみを必要とします。コードをできるだけシンプルに保つために、気になるフィールドだけにマップし、Yesod に他のすべてを無視させたいと思います。代わりに、フィールドが一致しないと文句を言います。
  4. ToJSON などのモデルのインスタンスを定義するにはどうすればよいですか。JSON のレンダリング方法をカスタマイズしたいのですが、次のエラーが発生します。

Handler/ProductStat.hs:8:10: ToJSON Product' (All instance types must be of the form (T t1 ... tn) where T is not a synonym. Use -XTypeSynonymInstances if you want to disable this.) In the instance declaration forToJSON Product の不正なインスタンス宣言

4

1 に答える 1

1

1) sql= が mongo に接続されていないようです。SQL は既にこれを行っているので、Mongo にとっては難しいことではありません。

2) Persistent/persistent-mongoDB/Database/Persist でクエリを実行する関数を変更できます PersistConfig の runPool 関数があります。これは yesod-defaults で使用されます。readOnly 設定を確認するには、おそらく loadConfig 関数を変更する必要があります。

3) reorder 関数を変更して無視できるようにしても問題ありませんが、将来的には (MongoDB がすべてを ordeR で返す場合)、パフォーマンスに影響を与える可能性があるため、理想的には無視された列をリストします。

4) Persistent への変更は必要ありません。TypeSynonymInstances を有効にしてみましたか?

これらの変更の前に、他にも優先すべき Yesod/Persistent の優先事項がいくつかあります。袖をまくり上げて、それらを作成するために必要な支援をお知らせください。2 と 3 は、テストに専念していただければ、すぐに自分で変更できます。

于 2011-11-21T17:05:58.623 に答える