J'écris une fonction Azure Azure en F # et je voudrais lier un paramètre de type DocumentClient
pour avoir plus de contrôle sur les requêtes qui sont effectuées dans Cosmos DB. Voilà ce que j'ai jusqu'à présent:Liaison DocumentClient dans le paramètre de la fonction Azure
Function.fs
namespace Functions
open System
open System.Net
open System.Net.Http
open Newtonsoft.Json
open Microsoft.Azure.Documents
open Microsoft.Azure.Documents.Client
open Microsoft.Azure.WebJobs
open Microsoft.Azure.WebJobs.Host
open Microsoft.Azure.WebJobs.Extensions
open Microsoft.Azure.WebJobs.Extensions.DocumentDB
module Function =
let Run(req: HttpRequestMessage, [<DocumentDB>] client: DocumentClient, log: TraceWriter) =
log.Info(sprintf "F# HTTP trigger function processed a request.")
req.CreateResponse(HttpStatusCode.OK)
function.json
{
"disabled": false,
"scriptFile": "..\\..\\..\\build\\Debug\\Functions\\Functions.dll",
"entryPoint": "Functions.Function.Run",
"bindings": [
{
"direction": "in",
"type": "httpTrigger",
"authLevel": "anonymous",
"name": "req",
"methods": [ "get" ],
"route": "users"
},
{
"direction": "in",
"type": "documentDB",
"name": "client",
"connection": "COSMOSDB_CONNECTION_STRING"
},
{
"direction": "out",
"type": "http",
"name": "res"
}
]
}
host.json
{
"frameworks": {
"net46":{
"dependencies": {
"Dynamitey": "1.0.2",
"FSharp.Interop.Dynamic": "3.0.0",
"Microsoft.Azure.DocumentDB": "1.17.0",
"Microsoft.Azure.WebJobs.Extensions.DocumentDB": "1.0.0"
}
}
}
}
local.settings.json
{
"IsEncrypted": false,
"Values": {
"AzureWebJobsDashboard": "",
"AzureWebJobsStorage": "UseDevelopmentStorage=true",
"COSMOSDB_CONNECTION_STRING": "AccountEndpoint=https://localhost:8081;AccountKey=C2y6yDjf5/R+ob0N8A7Cgv30VRDJIWEHLM+4QDU5DE2nQ9nDuVTqobD4b8mGGyPMbIZnqyMsEcaGQy67XIw/Jw==;"
}
}
Je lance la fonction localement en utilisant le stockage de développement et l'émulateur DB Cosmos. J'ai essayé de traduire en F # ce qu'il est décrit here pour C#. Et c'est aussi à peu près la même chose que ce qui est mentionné here. Mais je reçois seulement l'erreur Microsoft.Azure.WebJobs.Extensions.DocumentDB: 'Id' is required when binding to a DocumentClient property
.
Oui, cela fonctionne.Merci! J'avais installé Microsoft.Azure.DocumentDB v.1.17 ainsi j'ai dû rétrograder à v.1.13. –
Merci pour la solution de contournement, il suffit de frapper ce problème! –
Hm. Je me demande ce que nous sommes supposés faire si nous obtenons cette erreur de w/dans l'IDE des fonctions sur le portail ... – bc3tech