为了账号安全,请及时绑定邮箱和手机立即绑定

Golang初学者无法解决问题

Golang初学者无法解决问题

Go
蓝山帝景 2022-10-10 19:56:26
我想通过这种方法进行用户登录。这必须分为三个部分。与用户注册相同,但我不明白如何做到这一点?您能否写下我如何以同样的方式编写用户登录逻辑?它是使用 gorilla mux 创建的。一种方法必须在 db_service.go 中,然后一种方法必须在 login_service.go 中,一种方法必须在 login.go 中。这是 db_service.go 代码:  /* Used to create a singleton object of MongoDB client.Initialized and exposed through  GetMongoClient().*/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 withfunc 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)}
查看完整描述

1 回答

?
慕哥6287543

TA贡献1831条经验 获得超10个赞

像这样的处理程序


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

    }

}


查看完整回答
反对 回复 2022-10-10
  • 1 回答
  • 0 关注
  • 87 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信