問題タブ [ecto]
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.
elixir - Phoenix アプリケーションの起動時にデータベースを事前設定する方法は?
私はこのスキーマを持っています:
アプリケーションの起動時に、いくつかの行が自動的に作成されて入力されるようにしたいと思います:title
。たとえば、page1、page2、... を含むフィールドで 6 つのエントリを作成したいとします。
elixir - Phoenix でユーザー入力サーバー側を適切にサニタイズする方法
ユーザー入力のクライアント側をサニタイズする方法は知っていますが、サーバー側でも行います。それを行う適切な場所は を使用していることは知っていますが、これまでのところ、タグや SQL インジェクションなどの他の潜在的な有害なコンテンツに対してchangeset
適切に行う方法の例を見つけることができません。<script></script>
ユーザーが HTML コンテンツを変更してその HTML をデータベースに保存できるようにしたいので、標準の検証を使用できずraw
、テンプレートに HTML を表示します。誰かが私に例を挙げてもらえますか?
erlang - プロダクションエリクサーが既存のアトムを見つけられない
既存のキー (Poison) を使用して入力をマップに解析するライブラリを使用しています。なんらかの理由で、本番環境ではキーが存在しないと見なされ、その理由がわかりません。新人ではない誰かが、何が起こっているのかを理解するのを喜んで手伝ってくれることを望んでいるいくつかの情報があります。
1:
IEX セッション (iex -S mix) を実行すると、問題なく :erlang.binary_to_existing_atom("first_name", :"utf8") を実行できます。しかし、本番環境では、代わりに
2:
:first_name
プロダクションの直前に実行できますが:erlang.binary_to_existing_atom
、それまでにアトムが作成されているため、正常に動作します。しかし:first_name
、ライブラリのメソッドに続いて実行することはできませんPoison.Parser.parse!(~s(#{body}), keys: :atoms!)
。エラーがスローされるため、これは奇妙です。
3:
私は Heroku を使用していますが、それが重要かどうかはわかりません。アトムはEctoモデル内で定義されていますが、それが重要かどうかもわかりません。どんな助けでも大歓迎です-事前に感謝します!
postgresql - Ecto/Phoenix でデータベースから最新のエントリを選択する方法
データベースとクエリ(フロントエンドからのもの)から始めたばかりで、特定の を含むフィールドから最新のエントリを選択したいと思いtitle
ますPage1
。私を助けることができる 2 つのフィールドがあることを知っています: 1) created_at
- 最新のものだけを選択して注文できます。2)id
-すべてのエントリが新しいを生成することを知っているid
ので、最大のものを取得できますid
; 「標準」の編集コントローラーアクションに適用したい:
ですから、どちらの方法が優れているかを知り、クエリの例を見てみたいと思います。
elixir - ecto/phoenix/elixir の has_one に属していない
問題
私はfiles
テーブルを持っていますが、1 対 1 の関連付けを作成する他の多くのテーブルusers
がavatar
ありposts
ますphoto
。
可能な解決策
考えられる解決策は、テーブルを作成users_files
しposts_files
て使用することhas_one :through
です。しかし、これは過剰に見えます。
理想的なソリューション
理想的な解決策は、このようなテーブルを定義することです
with:
パラメータが含まれてhas_one
いるため、スキーマは次のようになります
そうすれば、belongs_to
onを定義する必要はありませんfiles
。同様のメカニズムはすでにありますか?フェニックスでこれに対処する標準的な方法は何ですか?
elixir - Ecto Model で非公開スキーマからテーブルを選択する
さまざまな Google 検索を行った後でも、PostgreSQL のデフォルトのパブリック スキーマにないテーブルを選択するという問題に頭を悩ませています。
ただし、モデル定義でPostgresのスキーマを参照しようとしましたが、うまくいきませんでした。ログを見ると、「引用」されている理由がわかります
スロー:
それがバグではないことは理解していますが、これを達成する方法を他に知りたいです。
elixir - ecto を使用してカスタム情報を保存する
ユーザーが PostgreSQL の JSONB レコード タイプを使用してカスタム フィールドを作成できる、フェニックスの Rails で最初に作成したアプリケーションを再実装しています。例として、次の (簡略化された表現) スキーマがあります。
クライアント
- ID (整数)
- クライアント タイプ ID (int)
- 名前 (文字列)
- 情報 (jsonb)
クライアントの種類
- ID (整数)
- 名前 (文字列)
カスタム フィールド定義
- ID (整数)
- クライアント タイプ ID (int)
- キー (文字列)
- ラベル(文字列)
Rails では、ActiveRecord が魔法のように JSONB をハッシュとの間で変換します。これにより、JSONB を使用してカスタム フィールドのスキーマレス セットを非常に簡単に格納できます。
たとえば、クライアントの種類ごとに異なるカスタム フィールドを定義できます。ユーザーに情報を表示するときに、定義をループしてキーを取得し、それを使用して JSONB ドキュメントからデータを取得します。
私は Ecto を使用してこれを達成する方法を見つけようとしていましたが、埋め込まれたスキーマを見る必要があるように見えます (ここで良い情報を見ました)。実行時にこれにカスタム量のフィールドを追加できますか?
これについてのアドバイスを探していました。これまでのところ、これは私が遭遇した唯一の実際の障害であり、ほとんどすぐには解決されません。
ありがとうございます。