>백엔드 개발 >Golang >golang에서 주석을 쿼리하는 방법

golang에서 주석을 쿼리하는 방법

PHPz
PHPz원래의
2023-04-14 09:33:53876검색

인터넷이 대중화되면서 댓글은 많은 웹사이트에서 중요한 부분이 되었습니다. 댓글의 존재는 웹사이트를 보다 상호작용적으로 만들 수 있으며, 사용자들은 댓글을 통해 서로의 의견을 소통할 수도 있습니다. 하지만 댓글 수가 늘어나면서 기존 댓글을 어떻게 효율적으로 조회하고 관리할 것인지가 특히 중요해졌습니다. 이번 글에서는 golang에서 코멘트를 쿼리하는 방법을 소개하겠습니다.

Go에서는 데이터베이스를 사용하여 댓글 데이터를 저장하고 쿼리할 수 있습니다. 작업을 용이하게 하기 위해 Go 언어의 ORM 프레임워크 GORM을 사용하여 주석 추가, 삭제, 수정 및 확인 작업을 구현합니다.

다음은 간단한 주석 모델입니다.

type Comment struct {
    gorm.Model
    PostID    uint   `gorm:"not null"`
    ParentID  uint
    Content   string `gorm:"not null"`
    IP        string `gorm:"not null"`
    UserAgent string `gorm:"not null"`
    Author    string `gorm:"not null"`
}

위 코드에서는 GORM의 모델 유형을 사용하여 기본 주석 모델을 정의합니다. 동시에 PostID 및 ParentID와 같은 속성을 사용하여 댓글 쿼리를 지원합니다.

다음으로 몇 가지 댓글 쿼리 기능을 구현하겠습니다.

  1. 특정 기사의 모든 댓글 가져오기

다음 코드를 사용하여 특정 기사의 모든 댓글을 가져올 수 있습니다.

func GetComments(postID uint) ([]Comment, error) {
    var comments []Comment
    err := db.Where("post_id = ?", postID).Find(&comments).Error
    if err != nil {
        return nil, err
    }
    return comments, nil
}

위 코드에서 GORM의 Where 메소드를 통해 주어진 매개변수 postID와 동일한 post_id를 쿼리합니다. 댓글을 작성하고 쿼리된 모든 댓글을 반환합니다.

  1. 사용자가 게시한 모든 댓글 가져오기

사용자가 게시한 모든 댓글을 가져오려면 다음 코드를 사용할 수 있습니다.

func GetUserComments(userId uint) ([]Comment, error) {
    var comments []Comment
    err := db.Where("author = ?", userId).Find(&comments).Error
    if err != nil {
        return nil, err
    }
    return comments, nil
}

위 코드에서 GORM의 Where 메소드는 Comments와 동일하여 작성자를 쿼리합니다. 매개변수 userId를 지정하고 쿼리된 모든 주석을 반환합니다.

  1. 댓글의 상위 댓글 가져오기

댓글에 상위 댓글이 있는 경우 다음 코드를 사용하여 해당 상위 댓글을 쿼리할 수 있습니다.

func GetParentComment(childComment *Comment) (*Comment, error) {
    var parentComment Comment
    err := db.Where("id = ?", childComment.ParentID).First(&parentComment).Error
    if err != nil {
        return nil, err
    }
    return &parentComment, nil
}

위 코드에서는 GORM의 First 메서드를 사용하여 쿼리합니다. id는 childComment.ParentID 매개변수가 지정된 A comment와 같고 쿼리 결과를 호출자에게 반환합니다.

  1. 특정 기사에 대한 댓글 수 가져오기

마지막으로 특정 기사에 대한 댓글 수를 가져오려면 다음 코드를 사용할 수도 있습니다.

func GetCommentCount(postID uint) (int, error) {
    var count int
    err := db.Model(&Comment{}).Where("post_id = ?", postID).Count(&count).Error
    if err != nil {
        return 0, err
    }
    return count, nil
}

위 코드에서 post_id를 쿼리하는 GORM의 모델 메소드 주어진 매개변수 postID와 동일한 댓글 수를 입력하고 쿼리 결과를 반환합니다.

지금까지 Go에서 댓글 쿼리를 수행하는 방법과 관련된 작업을 소개했습니다. 이러한 간단한 코드를 통해 기존 댓글을 효율적으로 조회하고 관리할 수 있어 홈페이지 운영에 큰 도움이 됩니다.

위 내용은 golang에서 주석을 쿼리하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.