MongoDB를 사용하여 Golang에 구조체 삽입
Golang에서 구조체 삽입은 구조체를 다른 구조체 안에 중첩하여 구조체의 기능을 확장하는 기술입니다. 구조체. 그러나 임베디드 구조체 및 MongoDB로 작업할 때 특정 문제가 발생할 수 있습니다.
문제: JSON 응답에서 중첩 필드 제외
다음 사용자 구조체를 고려하세요. :
type User struct { Id bson.ObjectId `json:"id,omitempty" bson:"_id,omitempty"` Name string `json:"name,omitempty" bson:"name,omitempty"` Secret string `json:"-,omitempty" bson:"secret,omitempty"` }
Secret 필드는 json:"-"을 사용하여 JSON 표현에서 제외됩니다. 이는 비밀 정보를 공개해서는 안 되는 대부분의 경우에 유용합니다.
딜레마: 관리 경로 및 내장 구조체
관리자에게 비밀 필드에 대한 액세스 권한을 제공하려면 , 포함된 필드로 User 구조체를 포함하는 adminUser 구조체가 생성됩니다.
type adminUser struct { User Secret string `json:"secret,omitempty" bson:"secret,omitempty"` }
그러나 이 접근 방식은 포함된 User 필드가 무시되므로 Secret 필드만 반환합니다.
해결책: bson 인라인 플래그
이 문제를 해결하기 위해 bson 패키지는 JSON 직렬화 및 MongoDB 문서 디코딩에 포함된 필드를 포함할 수 있는 인라인 플래그를 제공합니다.
type adminUser struct { User `bson:",inline"` Secret string `json:"secret,omitempty" bson:"secret,omitempty"` }
이 수정을 통해 User 필드(Secret 제외)와 adminUser의 Secret 필드가 모두 JSON 응답 및 MongoDB 문서에 포함됩니다.
대체 접근 방식
또는 User 구조체에서 Secret 필드를 제거하고 adminUser 구조체에만 포함하는 것을 고려할 수 있습니다. 이는 데이터 모델을 단순화하고 승인된 관리자만이 데이터베이스에 비밀을 쓰고 읽도록 보장합니다.
위 내용은 Golang에서 MongoDB를 사용하여 JSON 응답에 포함된 구조체 필드를 포함하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!