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

执行将我连接到 mongodb 数据库的函数时出现问题

执行将我连接到 mongodb 数据库的函数时出现问题

Go
拉丁的传说 2022-06-27 10:55:41
我正在尝试连接到mongodb,它确实可以,但是我有一个问题,那就是当我发送日志显示连接是否成功时,消息执行了两次,我不知道这是正常的还是我的代码有问题,谢谢你的帮助。package connectionimport (    "context"    "log"    "time"    "go.mongodb.org/mongo-driver/mongo"    "go.mongodb.org/mongo-driver/mongo/options"    "go.mongodb.org/mongo-driver/mongo/readpref")// Client es la instancia de la conexionvar Client = Connection()// Connection es la funcion que me permite conectarme a mongodbfunc Connection() *mongo.Client {    ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second)    defer cancel()    client, err := mongo.Connect(ctx, options.Client().ApplyURI("mongodb://localhost:27017"))    defer func() {        if err = client.Disconnect(ctx); err != nil {            panic(err.Error())        }    }()    err = client.Ping(ctx, readpref.Primary())    if err != nil {        log.Fatal(err.Error())    }    log.Println("conexion exitosa a mongodb")    return client}这是我的主要文件package mainimport (    "github.com/HamelBarrer/api-go/connection")func main() {    connection.Connection()}
查看完整描述

2 回答

?
守着星空守着你

TA贡献1799条经验 获得超8个赞

您在 main() 开始之前初始化连接,因此如果您还在Connection()main() 开始运行后调用函数,它将执行两次。但是,您的Connection函数在从函数返回之前断开连接,根据文档,它将与数据库断开连接。目前尚不清楚在断开连接后重用客户端是否会重新连接。无论如何,在返回函数之前不要断开连接。



查看完整回答
反对 回复 2022-06-27
?
ABOUTYOU

TA贡献1812条经验 获得超5个赞

package funtion


import (

    "context"

    "encoding/json"

    "log"

    "net/http"


    "github.com/HamelBarrer/api-go/connection"

    "github.com/HamelBarrer/api-go/models"

)


// CreateUser es la funcion para crear en la bd

func CreateUser(w http.ResponseWriter, r *http.Request) {

    w.Header().Set("Content-Type", "application/json")


    collection := connection.Client.Database("testing").Collection("numbers")


    var user models.User


    err := json.NewDecoder(r.Body).Decode(&user)

    if err != nil {

        log.Fatal(err.Error())

    }


    insertResult, err := collection.InsertOne(context.TODO(), user)

    if err != nil {

        log.Fatal(err.Error())

    }


    json.NewEncoder(w).Encode(insertResult.InsertedID)

}


查看完整回答
反对 回复 2022-06-27
  • 2 回答
  • 0 关注
  • 125 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号