ホームページ  >  記事  >  バックエンド開発  >  モデルを再利用し、Fiber/MongoDB の応答からフィールドを削除します

モデルを再利用し、Fiber/MongoDB の応答からフィールドを削除します

WBOY
WBOY転載
2024-02-08 21:27:181111ブラウズ

重用模型并从 Fiber/MongoDB 的响应中删除字段

この記事では、PHP エディター Zimo が、Fiber/MongoDB レスポンスのフィールドを削除してモデルを再利用する方法を紹介します。データベースからデータを取得するとき、特定のニーズを満たすため、または機密情報を保護するために、一部のフィールドを削除する必要がある場合があります。 Fiber/MongoDB は、高パフォーマンスの Web アプリケーションを迅速に構築できる人気の PHP フレームワークです。この記事では、Fiber/MongoDB の機能を利用してフィールドを削除し、アプリケーション内のモデルを再利用することで、コードの再利用性と保守性を向上させる方法を学びます。

質問内容

コードウォールを作らないように、不要なコードを再宣言しないようにしています。

私の主な質問は次の 2 つです:

47 行目で、既存のユーザー モデル userCollection.FindOne(ctx, filter, opts).Decode(&user) が上書き/デコードされますが、更新されません (46 行目) のオプションは無効ですvar user2 = models.User を宣言し、47 行目で user2 をデコードし、49 行目で user2

を返す場合を除いて適用されます。

46 行目には opts := options.FindOne().SetProjection(bson.M{"password": 0}) があります。上の例の 2 番目のユーザー user2 を使用すると、JSON 応答でパスワードが返されますが、パスワードは空です。応答で使用するためだけに別のユーザー モデルを作成せずに、応答からパスワード キーを完全に削除することは可能ですか?

リーリー

パスワード フィールドのない別のモデル UserResponse を作成し、CreateUser 関数で 2 番目の User モデルを宣言して、応答のオプションを使用して FindOne の出力を表示できるようにしてみました。

解決策

数時間かけて考え出し、ここに投稿した後、素晴らしい瞬間を経験しました。

ここで行われたすべての変更は、ユーザーを空のユーザー モデルとして再宣言することです:

リーリー

以上がモデルを再利用し、Fiber/MongoDB の応答からフィールドを削除しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はstackoverflow.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。