Golang初学者无法解决问题

我想通过这种方法进行用户登录。这必须分为三个部分。与用户注册相同,但我不明白如何做到这一点?您能否写下我如何以同样的方式编写用户登录逻辑?它是使用 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 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)

}



蓝山帝景
浏览 136回答 1
1回答

慕哥6287543

像这样的处理程序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    }}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go