Postgres と MongoDB を使用した CRUD?
php 編集者の Xigua が、この記事を通じて CRUD 操作に Postgres と MongoDB を使用する方法を学習します。 Postgres はリレーショナル データベースであり、MongoDB はドキュメント データベースです。 CRUD 操作は、データの作成 (Create)、読み取り (Read)、更新 (Update)、および削除 (Delete) のプロセスを指します。これら 2 つの異なるタイプのデータベースを組み合わせることにより、さまざまなニーズに基づいてデータ操作に最適なデータベースを選択し、効率と柔軟性を向上させることができます。次に、CRUD 操作におけるこれら 2 つのデータベースのアプリケーションを見てみましょう。
質問内容
私は Go とバックエンドについてはかなり初心者で、Go インターンシップ プログラムに参加しています。 psql データベースに接続する CRUD を構築しましたが、今度は mongoDB に接続するように指示されます。mongoDB は開発に使用され、PSQL は運用に使用されます。 mongo の新しいハンドラーを最初から作成する必要がありますか、それとも同じハンドラーを使用して、使用されているデータベースの種類を何らかの方法で判断し、それに応じてロジックを使用できますか? たとえば、ユーザー登録エンドポイントのハンドラーがあります:
リーリー私は mongo の挿入、登録、および CheckIfEmailExists 関数を構築しました:
func (ctrl *UserController) Register(c *gin.Context) { var user models.User if err := c.BindJSON(&user); err != nil { c.AbortWithStatusJSON(http.StatusUnprocessableEntity, gin.H{ "error": true, "message": err.Error(), }) return } err := ctrl.userService.Register(&user) if err != nil { c.AbortWithStatusJSON(http.StatusUnprocessableEntity, gin.H{ "error": true, "message": err.Error(), }) return } c.JSON(http.StatusCreated, gin.H{ "message": "successfully created an user", }) } func (svc *UserService) Register(user *models.User) error { if svc.userRepo.CheckIfEmailExists(user.Email) { return errors.New("user already registered") } hash, err := svc.generatePasswordHash(user.Password) if err != nil { return errors.New("err can't register user") } user.Password = hash return svc.userRepo.Insert(user) } func (repo *UserRepository) CheckIfEmailExists(mail string) bool { var user models.User err := repo.dbClient.Debug().Model(models.User{}).Where("email = ?", mail).Find(&user).Error return errors.Is(err, gorm.ErrRecordNotFound) } func (repo *UserRepository) Insert(user *models.User) error { err := repo.dbClient.Debug().Model(models.User{}).Create(user).Error if err != nil { log.Printf("failed to insert user: %v\n", err) return err } return nil }
Solution
UserService の作成方法に関するコードが提供されていません。
理想的には、次のようなインターフェイスが必要です:
リーリーその後、UserService は次のように作成されます:
リーリー そして、2 つの別個のリポジトリがあり、両方とも UserRepository
インターフェイスを実装します。つまり、インターフェイスと同じ名前と同じシグネチャ (パラメーター、戻り値の型) を持つメソッドが必要です。
mongo_user_repository.go
リーリーpostgres_user_repository.go
リーリー以下の (非常に悪い) 例のように、ユースケースに応じてこれらのいずれかを渡すことができます。
main.goリーリー
以上がPostgres と MongoDB を使用した CRUD?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









Railway 12306 の電子メール アドレスを登録する手順は次のとおりです。 12306 の Web サイトにアクセスし、[登録] をクリックして、電子メール、名前、携帯電話、その他の情報を入力し、パスワードと秘密の質問を設定します。プロンプトに、認証情報用の電子メール認証コードと携帯電話認証コードを入力し、「登録を完了」をクリックします。

BitgetWallet 取引所に登録できない理由は、アカウント制限、サポートされていない地域、ネットワークの問題、システム メンテナンス、技術的障害などさまざまです。 BitgetWallet 取引所に登録するには、公式 Web サイトにアクセスして情報を入力し、規約に同意して登録を完了し、本人確認を行ってください。

デジタル時代において、ソーシャルメディアは人々の生活に不可欠な部分となっています。 Douyin は、中国で最も人気のあるショートビデオ プラットフォームの 1 つとして、多くのユーザーを魅了しています。アカウントを 2 つ登録しているユーザーもいます。では、Douyin はなぜ 2 つのアカウントを持っているのでしょうか?この記事では、この質問に答え、携帯電話に 2 つの Douyin アカウントをインストールする方法を説明します。 1. なぜDouyinは2つのアカウントを持っているのですか?機能の差別化: ユーザーによっては、コンテンツの種類や機能に基づいてアカウントを区別する場合があります。たとえば、あるアカウントは日常生活を共有するために使用され、別のアカウントは専門的なスキルを示すために使用されます。 2. プライバシー保護: 一部のユーザーは、2 つのアカウントを通じてプライバシーを保護し、生活と仕事を分離し、情報漏洩を回避したいと考えています。 3. インタラクションのニーズ: インタラクションのニーズにより、ユーザーによっては 2 つを登録する場合があります。

ユーザー インタラクションを強化し、ユーザー エクスペリエンスを向上させるために、Douyin プラットフォームは興味深いインタラクティブ メカニズムである Spark を開始しました。ユーザーは、Douyin での一連のアクションを通じてスパークをアクティブ化し、アップグレードすることができます。異なる色は、異なる成果と名誉を表します。 Douyin Spark の色変更ルールを理解すると、ユーザーがより適切に参加して対話し、Douyin によってもたらされるソーシャルな楽しみを楽しむことができます。 1.Douyinのスパークカラー変更ルールの詳しい説明は何ですか? 1. 行動は、いいね、コメント、共有などのユーザーのインタラクティブな行動を活性化し、火花を散らす可能性があります。 2. レベルの向上 ユーザーのインタラクションが増えると、スパークは徐々にアップグレードされ、それに応じて色が変化します。 3. 色の変化 スパークの色の変化は、通常、ユーザーのインタラクション頻度、インタラクションの質、アクティビティへの参加に対する熱意に関連しています。 4. タスクが完了しました

Deepseekの公式Webサイトは現在、ユーザーにショッピングエクスペリエンスを提供するための複数の割引アクティビティを開始しています。新規ユーザーはサインアップして10ドルのクーポンを取得し、視聴者全員に15%の限定時間割引を享受します。友人は報酬を獲得することもできます。また、買い物時に贈り物を償還するためにポイントを蓄積することができます。イベントの締め切りは違う。

トマトノベルズのタスクを完了すると、コインとポイントを獲得できます。 方法には、新規ユーザー登録のタスクを完了することが含まれます。毎日チェックインしてください。割り当てられた小説の章を読みます。指定した小説の章にコメントを残してください。友達を招待して登録してください。ソーシャル プラットフォームで小説を共有します。

本土のユーザーは、次の手順で XT.COM 取引所に登録できます。 XT.COM 公式 Web サイトにアクセスします。右上隅の「登録」ボタンをクリックします。 「モバイル登録」オプションを選択します。本土の携帯電話番号を入力し、確認コードを取得して入力します。パスワードを設定します。認証を完了します。登録が完了しました。

Gate.io Sesame Openは、Fiat Currency Trading、Currency Trading、Leveraged Trading、Perpetual Contracts、ETFレバレッジドトークン、ウェルスマネジメント、スタートアップの初期公募など、ユーザーにセキュリティ、安定性、オープン性、透明度を提供するなど、世界をリードするブロックチェーンデジタル資産取引プラットフォームです。
