我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Golang初学者无法解决问题

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Golang初学者无法解决问题

小伙伴们有没有觉得学习Golang很有意思?有意思就对了!今天就给大家带来《Golang初学者无法解决问题》,以下内容将会涉及到,若是在学习中对其中部分知识点有疑问,或许看了本文就能帮到你!

问题内容

我想通过此方法进行用户登录。这必须分为三个部分。与用户注册相同,但我不明白该怎么做?您能写一下我如何以同样的方式编写用户登录逻辑吗?它是使用 gorilla mux 创建的。

一种方法必须位于 db_service.go 中,然后一种方法必须位于 login_service.go 中 一种方法必须位于 login.go 中。

这是 db_service.go 代码:



var clientinstance *mongo.client

//used during creation of singleton client object in getmongoclient().
var clientinstanceerror error

//used to execute client creation procedure only once.
var mongoonce sync.once

//i have used below constants just to hold required database config's.
const (
    connectionstring = "http://127.0.0.1:27017"
    auth_db          = "cluster0"
    user_collection  = "user"
)

//getmongoclient - return mongodb connection to work with
func getmongoclient() (*mongo.client, error) {

    //perform connection creation operation only once.
    mongoonce.do(func() {
        // set client options
        clientoptions := options.client().applyuri(connectionstring)
        // connect to mongodb
        client, err := mongo.connect(context.todo(), clientoptions)
        if err != nil {
            clientinstanceerror = err
        }
        // check the connection
        err = client.ping(context.todo(), nil)
        if err != nil {
            clientinstanceerror = err
        }
        log.println("connected mongodb!")
        clientinstance = client
    })

    return clientinstance, clientinstanceerror
}

//createissue - insert a new document in the collection.
func user_collection(user *model.user) (*mongo.insertoneresult, error) {

    //create a handle to the respective collection in the database.
    collection := clientinstance.database(auth_db).collection(user_collection)

    //perform insertone operation & validate against the error.
    return collection.insertone(context.todo(), user)
}

login_service.go 包含用户注册代码:

func register_user(user *model.user) (interface{}, error) {

    user.createdat = time.now().utc()
    user.updatedat = time.now().utc()
    if result, err := util.user_collection(user); err == nil {
        return result.insertedid, err
    } else {
        return nil, err
    }
}

用户注册码:

func Register(w http.ResponseWriter, r *http.Request) {
w.Header().Set("Content-Type", "application/json")

var user model.User
if err := json.NewDecoder(r.Body).Decode(&user); err == nil {

    if _, err := service.Register_User(&user); err == nil {
        w.WriteHeader(http.StatusCreated)
        json.NewEncoder(w).Encode(user)
    } else {
        w.WriteHeader(http.StatusInternalServerError)
        json.NewEncoder(w).Encode(err)
    }

} else {
    http.Error(w, err.Error(), http.StatusBadRequest)
    return
}

}


正确答案


对于处理程序来说是这样的

func login(w http.responsewriter, r *http.request) {
    w.header().set("content-type", "application/json")

    var user model.user
    if err := json.newdecoder(r.body).decode(&user); err == nil {

      if _, err := service.login_user(&user); err == nil {
          json.newencoder(w).encode(user)
      } else {
          w.writeheader(http.statusinternalservererror)
          json.newencoder(w).encode(err)
      }

    } else {
          http.error(w, err.error(), http.statusbadrequest)
          return
    }
}

对于数据库来说是这样的(需要实现查询而不是插入)

func Login_User(user *model.User) (interface{}, error) {

    // Implement this query
    if result, err := util.Find_User(user); err == nil {
        return result, err
    } else {
        return nil, err
    }
}

以上就是本文的全部内容了,是否有顺利帮助你解决问题?若是能给你带来学习上的帮助,请大家多多支持编程网!更多关于Golang的相关知识,也可关注编程网公众号。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Golang初学者无法解决问题

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Golang初学者无法解决问题

小伙伴们有没有觉得学习Golang很有意思?有意思就对了!今天就给大家带来《Golang初学者无法解决问题》,以下内容将会涉及到,若是在学习中对其中部分知识点有疑问,或许看了本文就能帮到你!问题内容我想通过此方法进行用户登录。这必须分为三个
Golang初学者无法解决问题
2024-04-05

Go语言初学者常见问题解答

Go语言初学者常见问题解答随着Go语言在互联网和软件开发领域的不断普及,越来越多的初学者开始接触并学习这门语言。然而,在学习过程中常常会遇到各种问题,本文将针对一些常见问题提供解答,并附上具体的代码示例,希望能够帮助初学者更好地理解和掌握
Go语言初学者常见问题解答
2024-03-05

Golang 初学者疑惑消解秘籍:常见问题一网打尽

golang 初学者常见问题解答:如何打印数据? 使用 fmt.println() 函数。如何定义变量? 使用 var 或 := 关键字。如何创建数组或切片? 数组:使用 [length]type 语法;切片:使用 []type 语法。如何
Golang 初学者疑惑消解秘籍:常见问题一网打尽
2024-05-06

golang中包无法引入问题解决

本文主要介绍了golang中包无法引入问题解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
2023-03-19

PHP 调试初学者指南,轻松起步解决问题

作为 php 开发人员,调试问题至关重要。入门指南包括:使用 var_dump() 打印变量类型和值;使用 print_r() 以格式化方式打印变量(数组/对象);使用 error_log() 将消息写入错误日志,便于服务器端代码调试;使用
PHP 调试初学者指南,轻松起步解决问题
2024-04-10

golang中包无法引入问题如何解决

这篇文章主要讲解了“golang中包无法引入问题如何解决”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“golang中包无法引入问题如何解决”吧!问题背景开发环境区分不同网段,同一个程序引入到
2023-07-05

为 Golang 初学者扫盲:常见难题的明晰解答

解决 golang 初学者的常见难题:访问全局变量: 使用 global_variable 语法,如 global_variable_x。修改函数参数值: 使用引用传递(指针),如 *y = 10。等待 goroutine 完成: 使用 s
为 Golang 初学者扫盲:常见难题的明晰解答
2024-05-06

Golang 初学者疑问指南:入门坎坷迎刃而解

Go 新手疑问指南简介对于 Go 新手来说,入门时可能会遇到一些常见问题。本文将解答这些问题,帮助你顺利起步。常见问题1. 如何安装 Go?go get

我要
反馈