問題タブ [go-gorm]
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.
json - ネストされた JSON をデシリアライズするか、単に Go で転送します
Go を使用して基本的な API を構築し、postgres テーブルの JSON フィールドに JSON を他の (プレーンな) データ型と共に格納しました。私のモデルを使用して、単純にデータベースから行をフェッチし、それを JSON として転送しようとしています。
GORMを使用してデータを構造体に逆シリアル化すると、選択したデータ型に応じてバイト配列または文字列としてレンダリングされる JSON を除いて、ほとんどのマッピングがシームレスに行われます。
モデルは次のとおりです(更新済み):
典型的な JSON は次のようになります (DB から):
したがって、このデータを変更したり、Go 構造体などに逆シリアル化したりするのではなく、単にこのデータを渡したいという考えです。コントローラー/ルートは次のとおりです。
次の JSON で応答します (統計は json.RawMessage として):
または、代わりに (統計を文字列として):
これを単純に渡すために必要なオプションは何ですか?これまでのところ、JSON を構造体にマップしようとして失敗しました (動的データと、最初に JSON を選択した理由により、これは困難になります)。
c.JSONが構造体から JSON にすべてのデータを自動的にマーシャリングすることで、 gin-gonicからいくつかの魔法が起こっていることに気付きましたが、json データのマーシャリングを回避する方法があることを望んでいますか?
ItemInfo サブ構造体で実行すると、次のエラーでパニックになります。
編集:更新されたコード:
go - gorm Many To Many Select で無効な関連付け [] エラーが発生する
これは私のデータベーススキーマです:
ユーザー:
言語:
ユーザー言語:
これは私のコードです:
私はこの結果を期待しています:
しかし、私はinvalid association []
コンソールにアクセスしています。ゴームロガーを追加しても、詳細情報は得られませんでした。
言語名の配列のような「言語」オブジェクトしか取得できない場合でも、これは問題ありません。
go - ゴームのmany2many、本当に
ゴームで多対多の関係を使用しようとしています。ただし、この例は部分的なスニペットであり、同様のサンプル スニペットを作成しようとすると失敗します。
これは、最後の CreateTable 呼び出しでパニックになります。panic: invalid association []
reflection - gorm ライブラリで反映する
golangのデータベース ライブラリとしてgorm パッケージ ( https://github.com/jinzhu/gorm ) を使用しています。「ホテル」や「パッケージ」など、多くのクラス (データベース テーブル) があります。コードを複製することは、良いプログラミング方法ではありません。ばかげた例として、各テーブルから最初のオブジェクトを取得したいとします。オブジェクトごとにこのメソッド ( GetFirstHotel
, ...) を書くことができます。GetFirstPackage
しかし、より良い方法はGetFirstItem
、最初の param を使用してパラメーターと同じクラスのオブジェクトを作成し、それを gorm に渡すメソッドを1 つだけ持つことinterface{}
です。そのためにreflectを使用しようとしましたが、おそらくあまり理解していないため失敗しました。
gorm ライブラリの関数を見つけられなかっただけか、reflect パッケージを適切に使用できないのかもしれません。GetFirstItem
関数をどのように実装すればよいですか。これを実装することは可能ですか、それともコードを繰り返す必要がありますか?
mysql - GoでリモートのMySqlに接続できません
Go を使用してリモートの MySql サーバーに接続する必要があります。次のコードを使用して、gorm 経由で MySql に接続しています。
Goサーバーを実行すると、次のエラーが発生します
このエラーを修正するにはどうすればよいですか?
go - has-one を使用した Golang Gorm の 1 対多
小さな注文管理アプリのプロトタイプを作成して、Go と Gorm を学ぼうとしています。データベースはMySQLです。単純なクエリでは、Gorm は優れています。ただし、1 対 1 の関係と 1 対 1 の関係の組み合わせを含む結果セットを取得しようとすると、Gorm は不十分なようです。間違いなく、実際に不足しているのは私の理解不足です。私が達成しようとしていることのオンラインの例が見つからないようです。どんな助けでも大歓迎です。
構造体に行く
データベース テーブル
現在のクエリ
結果 (gorm は 2 つの db クエリを作成します)
代替クエリ
結果 (gorm は 3 つの db クエリを作成)
理想的な結果
上記の「代替クエリ」は、理想的なクエリ結果を生成します。ただし、Gorm はそのために 3 つの別個のデータベース クエリを作成します。理想的には、1 つ (または 2 つ) のデータベース クエリで同じ結果が得られます。
これは、MySQL でいくつかの結合を使用して実現できます。Gorm では結合が可能です。しかし、Gorm のリレーショナル マジックの一部を活用したいと考えていました。
本当にありがとう!
go - Golang gorm - 深くネストされたモデルをプリロードする
次の不自然な例があります。
これにより、次の出力が得られます。
Top -> Middle -> Low のみをネストして呼び出すとPreload("Middle.Low")
、正常に動作します。手がかりはおそらく二重ポインタ参照[]**main.Low
にありますが、これを適切に行う方法がわかりません。
このレベルでは、ネストされたプリロードがサポートされていない可能性があります。誰でも知っていますか?
mysql - Golang Join 配列インターフェース
一括挿入を作成しようとしています。gormを使用していますgithub.com/jinzhu/gorm
しかし、エラーが発生しました:
エラー 1136: 間違ったクエリを返すため、列数が行 1 の値数と一致しません
手動クエリを使用すると動作します:
以下が生成されます。
問題は、配列インターフェイスを作成して文字列を次のように生成する方法です"XX1", "Jakarta", ...
手伝ってくれてありがとう。