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"
Другие вопросы по тегам