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

使用 gocosmos 创建文档时未经授权

使用 gocosmos 创建文档时未经授权

Go
拉风的咖菲猫 2022-09-05 09:59:45
我从 https://github.com/btnguyen2k/gocosmos 那里得到了Azure CosmosDB的go-sql-driver。当我打电话给gocosmos时,它很顺利。NewRestClient 获取 rest 客户端,CreateDatabase() 创建数据库,CreateCollection() 创建集合。问题是当我使用CreateDocument()时,我得到状态码401和正文的响应,如下所示{"code":"Unauthorized","message":"The input authorization token can't serve the request. Please check that the expected payload is built as per the protocol, and check the key being used. Server used the following payload to sign: 'post\ndocs\ndbs/ToDoList/colls/Items\nmon, 31 may 2021 13:31:44 gmt\n\n'\r\nActivityId: a9bbd729-3495-400f-9d79-ddec3737aa92, Microsoft.Azure.Documents.Common/2.11.0"}我已经尝试了我见过的所有解决方案,但我还没有解决问题。
查看完整描述

1 回答

?
慕雪6442864

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

我按照本教程进行了操作,使用此示例代码,我可以成功创建数据库,集合和文档。这是我的测试结果,它能帮到你吗?

//img1.sycdn.imooc.com//6315582c0001e31809870576.jpg

// connects to MongoDB

func connect() *mongo.Client {

    mongoDBConnectionString := os.Getenv(mongoDBConnectionStringEnvVarName)

    if mongoDBConnectionString == "" {

        log.Fatal("missing environment variable: ", mongoDBConnectionStringEnvVarName)

    }


    database = os.Getenv(mongoDBDatabaseEnvVarName)

    if database == "" {

        log.Fatal("missing environment variable: ", mongoDBDatabaseEnvVarName)

    }


    collection = os.Getenv(mongoDBCollectionEnvVarName)

    if collection == "" {

        log.Fatal("missing environment variable: ", mongoDBCollectionEnvVarName)

    }


    ctx, cancel := context.WithTimeout(context.Background(), time.Second*10)

    defer cancel()


    clientOptions := options.Client().ApplyURI(mongoDBConnectionString).SetDirect(true)

    c, err := mongo.NewClient(clientOptions)


    err = c.Connect(ctx)


    if err != nil {

        log.Fatalf("unable to initialize connection %v", err)

    }

    err = c.Ping(ctx, nil)

    if err != nil {

        log.Fatalf("unable to connect %v", err)

    }

    return c

}


// creates a todo

func create(desc string) {

    c := connect()

    ctx := context.Background()

    defer c.Disconnect(ctx)


    todoCollection := c.Database(database).Collection(collection)

    r, err := todoCollection.InsertOne(ctx, Todo{Description: desc, Status: statusPending})

    if err != nil {

        log.Fatalf("failed to add todo %v", err)

    }

    fmt.Println("added todo", r.InsertedID)

}


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

添加回答

举报

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