> 백엔드 개발 > Golang > Golang의 `omitempty`를 사용하여 MongoDB 업데이트에서 빈 값을 유지하는 방법은 무엇입니까?

Golang의 `omitempty`를 사용하여 MongoDB 업데이트에서 빈 값을 유지하는 방법은 무엇입니까?

DDD
풀어 주다: 2024-11-23 10:23:14
원래의
685명이 탐색했습니다.

How to Preserve Empty Values in MongoDB Updates Using Golang's `omitempty`?

Golang 구조에서 "omitempty"를 사용하여 MongoDB 업데이트에서 빈 값을 처리하는 방법

소개

"omitempty" 필드가 있는 Golang 구조를 사용하면 선택적 JSON 값을 값이 비어 있는 필드는 제외됩니다. 그러나 빈 값이 데이터베이스에 반영되지 않을 수 있으므로 MongoDB 문서를 업데이트할 때 문제가 발생할 수 있습니다.

문제

"omitempty"가 있는 구조를 사용하는 경우 플래그를 사용하여 JSON 양식 값을 매핑하면 빈 필드가 무시됩니다. 이로 인해 MongoDB에서 문서를 업데이트할 때 문제가 발생합니다.

  • 업데이트 중에 이전에 선택한 확인란을 선택 취소하면 빈 값이 구조에 매핑되지 않으며 데이터베이스에 저장할 수 없습니다.
  • 반대로, REST API 업데이트에서는 필요한 값만 제공하면 데이터베이스의 다른 필드 값을 재정의할 수 있습니다. 변경되었습니다.

요구 사항

MongoDB에 비어 있거나 업데이트된 값을 저장하는 기능을 유지하면서 "omitempty" 플래그를 유지하는 것은 유연하고 강력한 업데이트에 필수적입니다. process.

솔루션

이 문제를 해결하려면 구조에서 영향을 받는 필드를 포인터로 변환하세요.

type Coupon struct {
    Id               *int    `json:"id,omitempty" bson:"_id,omitempty"`
    Name             string `json:"name,omitempty" bson:"name,omitempty"`
    Code             string `json:"code,omitempty" bson:"code,omitempty"`
    Description      string `json:"description,omitempty" bson:"description,omitempty"`
    Status           *bool   `json:"status" bson:"status"`
    MaxUsageLimit    *int    `json:"max_usage_limit,omitempty" bson:"max_usage_limit,omitempty"`
    SingleUsePerUser *bool   `json:"single_use_per_user,omitempty" bson:"single_use_per_user,omitempty"`
}
로그인 후 복사

이 방법은 다음과 같습니다.

  • nil 포인터는 생략된 필드를 나타냅니다.
  • A 0 값에 대한 nil이 아닌 포인터는 빈 필드를 나타냅니다.
  • 0이 아닌 값에 대한 nil이 아닌 포인터는 필드를 지정된 값으로 설정합니다.

포인터 사용 , "생략" 동작을 유지하면서 MongoDB 업데이트에서 빈 값과 업데이트된 값을 모두 처리할 수 있는 유연성을 제공합니다.

위 내용은 Golang의 `omitempty`를 사용하여 MongoDB 업데이트에서 빈 값을 유지하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿