【问题标题】:AF Binding to CosmosDbAF 绑定到 CosmosDb
【发布时间】:2018-07-25 13:49:45
【问题描述】:

我正在尝试将数据从 Azure 函数输出到 CosmosDb (MongoDb),我有以下绑定设置:

[DocumentDB("mydatabase", "mycollection",
    ConnectionStringSetting = "CosmosDBConnection", 
    CreateIfNotExists= true, 
    PartitionKey = "SomeKey")]
IAsyncCollector<MyEntity> mongoBinding,

在我的代码中,我执行以下操作:

var entity = new MyEntity() {SomeKey="X1CLX1010000002", Data = "somedata"};
await mongoBinding.AddAsync(entity);

public class MyEntity {
    public string SomeKey {get; set;}
    public string Data {get; set;}
}

导致错误:

{"Errors":["分区键组件定义路径'SomeKey' 无法接受,在位置“0”附近失败。分区键路径 必须仅包含有效字符且不包含尾部斜杠或 通配符。"]}

知道我做错了什么吗?

【问题讨论】:

  • 您是否尝试在属性名称周围使用大括号?试试PartitionKey = "{SomeKey}"
  • 如果我将其更改为使用大括号,我会得到:Microsoft.Azure.WebJobs.Host:错误索引方法“BlobStorageEventHandler.Run”。 Microsoft.Azure.WebJobs.Host:“SomeKey”不存在绑定参数。
  • {MyEntity.SomeKey} ?
  • 原来,Azure Functuons 中的绑定不支持 MongoDb,所以我不得不切换到 .Net 的 MongoDb 驱动程序(虽然使用“/SomeKey”确实创建了集合,但我是无法在其中获取数据(

标签: azure-functions azure-cosmosdb azure-cosmosdb-mongoapi


【解决方案1】:

解决方案是在密钥的开头添加一个斜杠,例如PartitionKey = "/SomeKey"。然后分区键就像一个路径,因此它需要“/”开头。你没有使用斜线,所以上面的错误。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-08-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-14
    相关资源
    最近更新 更多