The code checks if theI'm using fiber and mongodb. Field "field" is needed to obtain certain data to unload the load on the database. If field "field" is empty, you needthen needs to use one model, otherwiseoutput all the otherdata from the database to make work easier to frontend. I don't like this crutch. Is there a much better solution?
func GetUserById(c *fiber.Ctx) error {
ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second)
var userId = c.Params("userId")
defer cancel()
objId, _ := primitive.ObjectIDFromHex(userId)
// Creates options for search.
opts, err := search.GetOneOptions(c, models.UserModel{})
if err != nil {
return responses.Response(c, http.StatusBadRequest, err.Error())
}
if c.Query("field") != "" {
var user models.UserModelOmitempty
err = usersCollection.FindOne(ctx, bson.M{"_id": objId}, opts).Decode(&user)
if err != nil {
return responses.Response(c, http.StatusBadRequest, "user not found")
}
return responses.ResponseWithData(c, http.StatusOK, "success", user)
} else {
var user models.UserModel
err = usersCollection.FindOne(ctx, bson.M{"_id": objId}, opts).Decode(&user)
if err != nil {
return responses.Response(c, http.StatusBadRequest, "user not found")
}
return responses.ResponseWithData(c, http.StatusOK, "success", user)
}
}

