소개
MongoDB는 바이너리 JSON으로 표현된 문서와 상호 작용합니다. (BSON) 형식입니다. Go에서는 MongoDB에 삽입하기 위해 BSON 문서를 구성하고 전달하는 것이 어려울 수 있습니다. 이 문서에서는 이 프로세스 중에 발생하는 일반적인 오류에 대한 솔루션을 제공합니다.
오류: 인터페이스{}는 BSON 문서로 마샬링할 수 없습니다
BSON 문서를 인터페이스{}로 정의된 함수 매개변수를 사용하면 "인터페이스 {}를 BSON 문서로 마샬링할 수 없습니다."라는 오류가 발생할 수 있습니다. 이 오류는 Go가 임의의 인터페이스를 BSON 문서로 자동 마샬링할 수 없음을 나타냅니다.
해결책: 사용자 정의 구조체 사용
이 문제를 해결하려면 인터페이스 사용을 피하세요.{} 대신 BSON 문서를 나타내는 사용자 정의 구조체를 정의하세요. 예를 들어 다음 BSON 문서를 생각해 보세요.
{ "_id": "53439d6b89e4d7ca240668e5", "balanceamount": 3, "type": "reg", "authentication": { "authmode": "10", "authval": "sd", "recovery": { "mobile": "sdfsd", "email": "email@protected.com" } }, "stamps": { "in": "x", "up": "y" } }
Go에서 해당 사용자 정의 구조체는 다음과 같습니다.
type Account struct { Id bson.ObjectId `bson:"_id"` BalanceAmount int // Other fields... }
함수 삽입에 사용자 정의 구조체 전달
이제 dbEngine.go 파일에서 사용자 정의 구조체를 인수:
func Insert(document *Account) { // Connect to MongoDB and insert the document }
애플리케이션에서의 사용
이 함수를 사용하려면 Account 구조체의 인스턴스를 생성하고 해당 필드를 채운 다음 Insert에 전달합니다. 함수:
acc := Account{ Id: bson.NewObjectId(), BalanceAmount: 3, // Other fields... } dbEngine.Insert(&acc)
결론
BSON 문서를 나타내는 사용자 정의 구조체를 생성하고 이를 특정 구조체 유형을 허용하는 함수에 전달하면 오류가 발생할 수 있습니다. 피하고 BSON 문서를 원활하게 구성하고 전달할 수 있습니다.
위 내용은 Go에서 \'인터페이스 {}를 BSON 문서로 마샬링할 수 없습니다\' 오류를 방지하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!