我有一个模型,可以创建一个没有问题的JSON文档,但检索它会导致嵌套的JSON对象为空.
func (r *CourseRepo) GetCourseById(ctx context.Context, id string) (Course, error) {
clog := log.GetLoggerFromContext(ctx)
var course Course
objID, err := primitive.ObjectIDFromHex(id)
if err != nil {
return course, err
}
filter := bson.M{"_id": objID}
err = r.collection.FindOne(ctx, filter).Decode(&course)
if err != nil {
clog.ErrorCtx(err, log.Ctx{"msg": "an error occurred while finding a course"})
return course, err
}
return course, nil
}
struct
type Course struct {
ObjectId primitive.ObjectID `bson:"_id, omitempty"`
Id string `json:"id"`
Title string `json:"title"`
Description string `json:"description"`
Lessons string `json:"lessons"`
Duration string `json:"duration"`
Details struct {
Title string `json:"title"`
Instructor string `json:"instructor"`
Introduction string `json:"introduction"`
Learn string `json:"learn"`
Topics string `json:"topics"`
Prerequisites string `json:"prerequisites"`
Goal string `json:"goal"`
AdditionalDetails string `json:"additionalDetails"`
HighLevelOverview string `json:"highLevelOverview"`
} `json:"course_details"`
}
结果
{
"data": {
"ObjectId": "64953ac1bf06bfdd7936cad8",
"id": "",
"title": "Java 算法rithms",
"description": "An awesome course",
"lessons": "4",
"duration": "10 hours",
"course_details": {
"title": "",
"instructor": "",
"introduction": "",
"learn": "",
"topics": "",
"prerequisites": "",
"goal": "",
"additionalDetails": "",
"highLevelOverview": ""
}
},
"metadata": "none"
}
根据我所读到的内容,Decode也应该映射Nest值吗?