无法在 Azure Cosmos DB 中的分区键标头中将项替换为中文单词

我正在尝试使用golang在Azure Cosmos db中使用 github.com/vippsas/go-cosmosdb 包进行CURD操作。


一切正常,除了尝试在x-ms-documentdb-partitionkey中用中文字符替换文档。


文档示例数据,分区键为 /method


{

 "id": "9289b3f5-5830-4589-ab7d-6c0efbb4150e",

 "method": "日",

 "endpoint": "/api/savecsv?operator=jimmylin",

 "operator": "jimmy",

 "execTime": 1622867229,

 "payload": "abc.json"

}

这是我的代码:


    client := cosmosapi.New()

    _, _, err = client.CreateDocument(ctx, "dbid", "contid", &log, cosmosapi.CreateDocumentOptions{PartitionKeyValue: log.Method})

    if err != nil {

        err = tracerr.New(err.Error())

        tracerr.PrintSourceColor(err, 2)

    }

我还打印出了在 /vippsas/go-cosmosdb 包中处理的分区键。输出为:


x-ms-documentdb-partitionkey:["日"]

这是我的错误:


The JSON, SQL, or JavaScript in the request body is invalid

如果我将/method更改为英语,它工作得很好。


如果我使用JS SDK也可以正常工作(中文字符分区键)。


我相信JS SDK或我使用的软件包都基于Azure Cosmos DB Restful API。我认为这个软件包可能缺少一些东西。


冉冉说
浏览 121回答 1
1回答

元芳怎么了

Azure Cosmos db 仅支持 x-ms-documentdb-partitionkey 中的 Unicode 或 ASCII,而 github.com/vippsas/go-cosmosdb 包使用的是 json。封送,在内部自动将 Unicode 转换为中文字符。解决它的唯一方法是在创建文档时使用英语作为分区键。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go