9.4.2 채팅방 관리 기능 구현
몽고DB 사용 환경이 구성됐으면 room.go 파일을 생성하고 채팅방을 위한 Room 타입을 정의해 보자.
▼ room.go
package main import ( "gopkg.in/mgo.v2/bson" ) type Room struct { ID bson.ObjectId `bson:"_id" json:"id"` Name string `bson:"name" json:"name"` }
HTTP 요청 내용을 구조체로 변환하기 위해 binding 패키지를 사용한다. 자세한 내용은 binding 패키지 공식 문서(http://mholt.github.io/binding/)를 참고하기 바란다.
$ go get github.com/mholt/binding
▼ room.go
import ( "net/http" "github.com/mholt/binding" "gopkg.in/mgo.v2/bson" ) func (r *Room) FieldMap(req *http.Request) binding.FieldMap { return binding.FieldMap{&r.Name: "name"} }
binding 패키지에서 Request 데이터를 Room 구조체로 변환하려면 Room 타입이 binding.FieldMapper 인터페이스여야 한다. Room 타입을 binding.FieldMapper 인터페이스로 만들기 위해 Room 타입에 FieldMap() 메서드를 추가했다.