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 サイトの他の関連記事を参照してください。