如何使用Core(SQL)API从Azure Cosmos Db检索数据

时间:2019-02-26 06:45:17

标签: c# azure azure-functions azure-cosmosdb

早安,

我正在Visual Studio中使用.net framework / V1开发azure函数,我想从Azure函数上的 TestData 集合中检索 clientDetails 数据,我的函数是HttpTrigger。 enter image description here

我尝试了以下链接中的示例:Azure Cosmos DB bindings for Azure Functions 1.x

我创建了两个属性类:

    public class DocumentClient
    {
        [JsonProperty("clientDetails")]
        public List<ClientDetails> clientDetails { get; set; }
    }

    public class ClientDetails
    {
        public string domain { get; set; }
        public string channel { get; set; }
        public string retailer { get; set; }
        public string store { get; set; }
        public string auth { get; set; }
    }

这是构造函数:

public static async Task<HttpResponseMessage> Run([HttpTrigger(AuthorizationLevel.Function), Disable()]HttpRequestMessage req, [DocumentDB(
        databaseName: "Client",
        collectionName: "TestData",
        ConnectionStringSetting = "CosmosDBConnection"
       )] DocumentClient client, TraceWriter log)

但是我在运行函数时遇到错误需要输入ID ,但是每次尝试添加

Id ="{Hardcoded - the TestData's Id}"

我遇到错误“触发该功能时,必须为此操作提供PartitionKey值”

我将此添加到了local.settings.json中:

"CosmosDBConnection": "AccountEndpoint=https://test.com:443/;AccountKey=testkey==;"

致谢

1 个答案:

答案 0 :(得分:1)

  

我遇到错误“必须为此提供PartitionKey值   功能被触发

根据此错误消息,我认为您需要在function.json文件中设置partitionKey。请参考此supported properties list

  

PartitionKey指定查找的分区键值。可以   包括绑定参数。

这里是一个示例:

{
    "name": "inputDocument",
    "type": "documentDB",
    "databaseName": "MyDatabase",
    "collectionName": "MyCollection",
    "id" : "{queueTrigger}",
    "partitionKey": "{partition key value}",
    "connection": "MyAccount_COSMOSDB",
    "direction": "in"
}