1
저는 새로 나왔습니다. MongoDB 데이터베이스의 모든 사용자를 반복하고 각 사용자가 'mgo'패키지를 사용하여 모든 게시물을 반복하는 간단한 프로그램을 작성하려고합니다. GO 루틴에 MongoDB 데이터베이스를 전달하는 방법은 무엇입니까?
package main
import (
"fmt"
"labix.org/v2/mgo"
"labix.org/v2/mgo/bson"
)
type User struct {
Id string
Email string
}
type Post struct {
Id string
Description string
}
func handleUser(db *mgo.Database, user *User) {
fmt.Println("ID: ", user.Id, " EMAIL: ", user.Email)
result := Post{}
iter := db.C("posts").Find(bson.M{"user_id": user.Id}).Iter()
for iter.Next(&result) {
fmt.Println("POST ID: ", result.Id, " POST DESCRIPTION: ", result.Description)
}
}
func main() {
session, err := mgo.Dial("localhost")
if err != nil {
panic(err)
}
defer session.Close()
db := session.DB("mydb")
result := User{}
iter := db.C("users").Find(nil).Iter()
for iter.Next(&result) {
handleUser(db, &result)
}
}
이
는 그냥 잘 작동하지만go handleUser(db, &result)
에
handleUser(db, &result)
에 대한 호출을 변경하려고하면 handleUser 내부의 두 번째 쿼리는 아무것도하지 않습니다.
'메인'이 이미 완료되었으므로 세션이 이미 닫혔다 고 생각됩니다. 맞습니까? 그렇다면 그러한 시나리오를 처리하는 방법은 무엇입니까?