더북(TheBook)

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() 메서드를 추가했다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.