type (
Id struct {
// I previously forgot to add the `ID` field in my question, it is present in my code but not on this question as @icza pointed it out to me
ID bson.ObjectId `json:"id" bson:"_id"`
}
User struct {
// When using anonymous struct, upon returning the collection, each of the document will have an empty `id` field, `id: ""`
Id
Email string `json:"email" bson:"email"`
...
}
// This works
User2 struct {
ID bson.ObjectId `json:"id" bson:"_id"`
Email string `json:"email" bson:"email"`
}
)
Возможно, я еще не понял концепцию анонимных структур. В приведенном выше примере при запросе всех пользователей из коллекции поле id
будет пустой строкой ""
. Однако, если я непосредственно определяю поле ID в структуре User
, то отображается id
. Разве это не анонимные структуры? В основном расширяется структура, поэтому вам не придется вводить их снова и снова?Anonymous structs return пустое значение поля
Еще пример:
type SoftDelete struct {
CreatedAt time.Time `json:"created_at" bson:"created_at"`
UpdatedAt time.Time `json:"updated_at" bson:"updated_at"`
DeletedAt time.Time `json:"deleted_at" bson:"deleted_at"`
}
type UserModel struct {
SoftDelete
}
type BlogPost struct {
SoftDelete
}
Оу извините, я забыл набрать ' ID' в первом блоке кода. На самом деле это в моем коде, я просто забыл добавить его к этому вопросу. Спасибо, что указали на тег 'inline'. Это сделало это для меня, спасибо кучам! Кстати, теперь вы ответили на два моих вопроса «mgo», как принято! :) – borislemke