func (md *MongoDB) getPostsForQuery(qryobj interface{}, skip, limit int32) (posts []BlogPost, err os.Error) { md.postmu.Lock() defer md.postmu.Unlock() var query mongo.BSON query, err = mongo.Marshal(qryobj) if err != nil { return } // count, _ := md.posts.Count(query) // if count == 0 { // err = os.NewError("COUNT 0 Post Not Found") // return // } var docs *mongo.Cursor //docs, err = md.posts.FindAll(query) docs, err = md.posts.Query(query, skip, limit) if err != nil { return } var doc mongo.BSON for docs.HasMore() { doc, err = docs.GetNext() if err != nil { return } var post BlogPost err = mongo.Unmarshal(doc.Bytes(), &post) if err != nil { return } posts = append(posts, post) } // if len(posts) == 0 { // err = os.NewError("no posts found") // } return }
//get comments belonging to a post func (md *MongoDB) GetComments(post_id int64) (comments []PostComment, err os.Error) { md.commentmu.Lock() defer md.commentmu.Unlock() //m := map[string]int64{"postid": post_id} type q map[string]interface{} m := q{ "$query": q{"postid": post_id}, "$orderby": q{"timestamp": 1}, } var query mongo.BSON query, err = mongo.Marshal(m) if err != nil { return } var docs *mongo.Cursor docs, err = md.comments.FindAll(query) if err != nil { return } var doc mongo.BSON for docs.HasMore() { doc, err = docs.GetNext() if err != nil { return } var comment PostComment err = mongo.Unmarshal(doc.Bytes(), &comment) if err != nil { return } comments = append(comments, comment) } return }