SDK Azure Functions
После обновления до 1.0.1 CLI-инструментов без каких-либо изменений кода я внезапно начал получать следующую ошибку:
ResizeImage: Microsoft.Azure.WebJobs.Host: Error indexing method 'Functions.ResizeImage'.
Microsoft.Azure.WebJobs.Extensions.DocumentDB:
'Id' is required when binding to a DocumentClient property.
Следующий код:
[FunctionName(nameof(ResizeImage))]
public static async Task RunAsync([BlobTrigger("profile-pictures/{name}")] CloudBlockBlob myBlob, string name, [DocumentDB(databaseName: "x", collectionName: "UserProfile", CreateIfNotExists = true)] DocumentClient client, [Blob("profile-pictures/resized-{name}", FileAccess.ReadWrite)] CloudBlockBlob resizedBlob, TraceWriter log)
Я думал, что Id необязательно? По крайней мере, так говорят документы.
Согласно документам:
Свойства id и sqlQuery нельзя указывать одновременно. Если ни id, ни sqlQuery не заданы, вся коллекция извлекается.
Сгенерированный JSON:
{
"bindings": [
{
"type": "blobTrigger",
"path": "profile-pictures/{name}",
"direction": "in",
"name": "myBlob"
},
{
"type": "documentDB",
"databaseName": "x",
"collectionName": "UserProfile",
"createIfNotExists": true,
"direction": "out",
"name": "client"
},
{
"type": "blob",
"path": "profile-pictures/resized-{name}",
"direction": "inout",
"name": "resizedBlob"
}
],
"disabled": false,
"scriptFile": "..\\X.Functions.dll",
"entryPoint": "X.Functions.ResizeImage.RunAsync"
}
Я использую 1.0.0 SDK
1 ответ
Я думал, что Id необязательно? По крайней мере, так говорят документы.
Да, идентификатор не обязателен. Но согласно документу привязок Azure Functions Cosmos DB. Нам нужно использовать IEnumerable
[DocumentDB(...)] IEnumerable<dynamic> documents
Вы получите все документы из коллекции. Я проверил это, и он работал нормально на моей стороне.
Кроме того, направление должно быть изменено на, если вы хотите получать данные из DocumentDB.
"direction": "in"