ホームページ > バックエンド開発 > Golang > Go Mongoose ドキュメントのフィールドにデフォルトの日付と時刻を設定するにはどうすればよいですか?

Go Mongoose ドキュメントのフィールドにデフォルトの日付と時刻を設定するにはどうすればよいですか?

Susan Sarandon
リリース: 2024-11-23 02:07:11
オリジナル
434 人が閲覧しました

How Can I Set a Default Date and Time for a Field in a Go Mongoose Document?

Time.Time フィールドを持つドキュメントを挿入するときにデフォルトの日付を設定する

mongoose では、Date フィールドのデフォルト値を設定するのは簡単ですが、 mgo を使用する Go では、状況が少し異なります。

なぜ設定できないのかGo のフィールドのデフォルト値?

Go ではフィールドのデフォルト値を使用できません。作成時には、その型の値が 0 になります。

解決策 1: コンストラクターのような関数

1 つのアプローチは、コンストラクターのような関数を作成することです。 CreatedAt フィールドを初期化します。ただし、タイムスタンプがデータベースのタイムスタンプと一致する必要がある場合は処理しません。

解決策 2: カスタム マーシャリング ロジック

より良い解決策には、カスタム bson の実装が含まれます。ゲッター ロジック。

GetBSON() Function

Go 実装の GetBSON() 関数は、保存する値を提供します。この場合、保存する前に CreatedAt フィールドを現在時刻に設定する必要があります。

func (u *User) GetBSON() (interface{}, error) {
    u.CreatedAt = time.Now()
    type my *User
    return my(u), nil
}
ログイン後にコピー

新しいタイプの作成

新しいタイプ、my 、無限の再帰を防ぐために作成されて返されます。

既存の処理Records

チェックを追加すると、CreatedAt フィールドが値 0 の場合にのみ設定され、既存のレコードの上書きが防止されます:

func (u *User) GetBSON() (interface{}, error) {
    if u.CreatedAt.IsZero() {
        u.CreatedAt = time.Now()
    }
    type my *User
    return my(u), nil
}
ログイン後にコピー

以上がGo Mongoose ドキュメントのフィールドにデフォルトの日付と時刻を設定するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート