我正在尝试使用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。我认为这个软件包可能缺少一些东西。
1 回答
元芳怎么了
TA贡献1798条经验 获得超7个赞
Azure Cosmos db 仅支持 x-ms-documentdb-partitionkey 中的 Unicode 或 ASCII,而 github.com/vippsas/go-cosmosdb 包使用的是 json。封送,在内部自动将 Unicode 转换为中文字符。
解决它的唯一方法是在创建文档时使用英语作为分区键。
- 1 回答
- 0 关注
- 120 浏览
添加回答
举报
0/150
提交
取消
