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

我从 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"}

我已经尝试了我见过的所有解决方案,但我还没有解决问题。


拉风的咖菲猫
浏览 107回答 1
1回答

慕雪6442864

我按照本教程进行了操作,使用此示例代码,我可以成功创建数据库,集合和文档。这是我的测试结果,它能帮到你吗?// connects to MongoDBfunc 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 todofunc 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)}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go