Delen via


Azure Cosmos DB-bindingen voor Azure Functions 1.x

In dit artikel wordt uitgelegd hoe u kunt werken met Azure Cosmos DB-bindingen in Azure Functions. Azure Functions ondersteunt trigger-, invoer- en uitvoerbindingen voor Azure Cosmos DB.

Notitie

Dit artikel is bedoeld voor Azure Functions 1.x. Zie Azure Cosmos DB-bindingen voor Azure Functions 2.x en hoger voor informatie over het gebruik van deze bindingen in Functions 2.x.

Deze binding heette oorspronkelijk DocumentDB. In Azure Functions versie 1.x is alleen de naam van de trigger gewijzigd in Azure Cosmos DB; de invoerbinding, uitvoerbinding en het NuGet-pakket behouden de DocumentDB-naam.

Notitie

Azure Cosmos DB-bindingen worden alleen ondersteund voor gebruik met de SQL-API. Voor alle andere Azure Cosmos DB-API's hebt u toegang tot de database vanuit uw functie met behulp van de statische client voor uw API, waaronder Azure Cosmos DB voor MongoDB, Azure Cosmos DB voor Apache Cassandra, Azure Cosmos DB voor Apache Gremlin en Azure Cosmos DB for Table.

Pakketten - Functions 1.x

De Azure Cosmos DB-bindingen voor Functions versie 1.x zijn beschikbaar in het NuGet-pakket Microsoft.Azure.WebJobs.Extensions.DocumentDB , versie 1.x. De broncode voor de bindingen bevindt zich in de GitHub-opslagplaats azure-webjobs-sdk-extensions .

De volgende tabel bevat informatie over het toevoegen van ondersteuning voor uitvoerbinding in elke ontwikkelomgeving.

Ontwikkelomgeving Ondersteuning toevoegen in Functions 1.x
Lokale ontwikkeling: C#-klassebibliotheek Het pakket installeren
Lokale ontwikkeling: C#-script, JavaScript, F# Automatisch
Portal-ontwikkeling Automatisch

Activator

De Azure Cosmos DB-trigger maakt gebruik van de Wijzigingenfeed van Azure Cosmos DB om te luisteren naar invoegingen en updates tussen partities. De wijzigingenfeed publiceert invoegingen en updates, niet verwijderingen.

Trigger - voorbeeld

In het volgende voorbeeld ziet u een in-process C#-functie die wordt aangeroepen wanneer de opgegeven database en verzameling worden ingevoegd of bijgewerkt.

using Microsoft.Azure.Documents;
using Microsoft.Azure.WebJobs;
using Microsoft.Azure.WebJobs.Host;
using System.Collections.Generic;

namespace CosmosDBSamplesV1
{
    public static class CosmosTrigger
    {
        [FunctionName("CosmosTrigger")]
        public static void Run([CosmosDBTrigger(
            databaseName: "ToDoItems",
            collectionName: "Items",
            ConnectionStringSetting = "CosmosDBConnection",
            LeaseCollectionName = "leases",
            CreateLeaseCollectionIfNotExists = true)]IReadOnlyList<Document> documents,
            TraceWriter log)
        {
            if (documents != null && documents.Count > 0)
            {
                log.Info($"Documents modified: {documents.Count}");
                log.Info($"First document Id: {documents[0].Id}");
            }
        }
    }
}

Trigger - kenmerken

Gebruik het cosmosDBTrigger-kenmerk voor C#-klassenbibliotheken in proces.

De constructor van het kenmerk neemt de databasenaam en verzamelingsnaam. Zie Trigger - configuratie voor informatie over deze instellingen en andere eigenschappen die u kunt configureren. Hier volgt een CosmosDBTrigger kenmerkvoorbeeld in een methodehandtekening:

    [FunctionName("DocumentUpdates")]
    public static void Run(
        [CosmosDBTrigger("database", "collection", ConnectionStringSetting = "myCosmosDB")]
    IReadOnlyList<Document> documents,
        TraceWriter log)
    {
        ...
    }

Zie Trigger: C#-voorbeeldvoor een volledig voorbeeld.

Trigger - configuratie

De volgende tabel bevat informatie over de bindingsconfiguratie-eigenschappen die u instelt in het bestand function.json en het kenmerk CosmosDBTrigger.

function.json-eigenschap Kenmerkeigenschap Beschrijving
type n.v.t. Moet worden ingesteld op cosmosDBTrigger.
direction n.v.t. Moet worden ingesteld op in. Deze parameter wordt automatisch ingesteld wanneer u de trigger maakt in Azure Portal.
name n.v.t. De naam van de variabele die wordt gebruikt in functiecode die de lijst met documenten met wijzigingen vertegenwoordigt.
connectionStringSetting ConnectionStringSetting De naam van een app-instelling die de verbindingsreeks gebruikt om verbinding te maken met het Azure Cosmos DB-account dat wordt bewaakt.
databaseName DatabaseName De naam van de Azure Cosmos DB-database met de verzameling die wordt bewaakt.
collectionName CollectionName De naam van de verzameling die wordt bewaakt.
leaseConnectionStringSetting LeaseConnectionStringSetting (Optioneel) De naam van een app-instelling die de verbindingsreeks bevat voor de service die de leaseverzameling bevat. Wanneer deze niet is ingesteld, wordt de connectionStringSetting waarde gebruikt. Deze parameter wordt automatisch ingesteld wanneer de binding wordt gemaakt in de portal. De verbindingsreeks voor de leaseverzameling moet schrijfmachtigingen hebben.
leaseDatabaseName LeaseDatabaseName (Optioneel) De naam van de database met de verzameling die wordt gebruikt voor het opslaan van leases. Als deze instelling niet is ingesteld, wordt de waarde van de databaseName instelling gebruikt. Deze parameter wordt automatisch ingesteld wanneer de binding wordt gemaakt in de portal.
leaseCollectionName LeaseCollectionName (Optioneel) De naam van de verzameling die wordt gebruikt voor het opslaan van leases. Wanneer deze niet is ingesteld, wordt de waarde leases gebruikt.
createLeaseCollectionIfNotExists CreateLeaseCollectionIfNotExists (Optioneel) Wanneer deze optie is ingesteld true, wordt de verzameling leases automatisch gemaakt wanneer deze nog niet bestaat. De standaardwaarde is false.
leasesCollectionThroughput LeasesCollectionThroughput (Optioneel) Definieert het aantal aanvraageenheden dat moet worden toegewezen wanneer de leaseverzameling wordt gemaakt. Deze instelling wordt alleen gebruikt wanneer createLeaseCollectionIfNotExists is ingesteld op true. Deze parameter wordt automatisch ingesteld wanneer de binding wordt gemaakt met behulp van de portal.
leaseCollectionPrefix LeaseCollectionPrefix (Optioneel) Wanneer dit is ingesteld, wordt er een voorvoegsel toegevoegd aan de leases die zijn gemaakt in de leaseverzameling voor deze functie, waardoor twee afzonderlijke Azure Functions dezelfde leaseverzameling kunnen delen met behulp van verschillende voorvoegsels.
feedPollDelay FeedPollDelay (Optioneel) Wanneer deze instelling is ingesteld, definieert deze, in milliseconden, de vertraging tussen het peilen van een partitie voor nieuwe wijzigingen in de feed, nadat alle huidige wijzigingen zijn verwijderd. De standaardwaarde is 5000 (5 seconden).
leaseAcquireInterval LeaseAcquireInterval (Optioneel) Wanneer deze optie is ingesteld, definieert deze, in milliseconden, het interval voor het starten van een taak om te berekenen of partities gelijkmatig worden verdeeld over bekende hostinstanties. De standaardwaarde is 13000 (13 seconden).
leaseExpirationInterval LeaseExpirationInterval (Optioneel) Wanneer deze is ingesteld, definieert deze, in milliseconden, het interval waarvoor de lease wordt genomen in een lease die een partitie vertegenwoordigt. Als de lease niet binnen dit interval wordt vernieuwd, wordt deze verlopen en wordt het eigendom van de partitie verplaatst naar een ander exemplaar. De standaardwaarde is 60000 (60 seconden).
leaseRenewInterval LeaseRenewInterval (Optioneel) Wanneer deze is ingesteld, definieert deze, in milliseconden, het vernieuwingsinterval voor alle leases voor partities die momenteel door een exemplaar worden bewaard. De standaardwaarde is 17000 (17 seconden).
controlepuntFrequency CheckpointFrequency (Optioneel) Wanneer deze is ingesteld, wordt het interval tussen leasecontrolepunten in milliseconden gedefinieerd. De standaardwaarde is altijd na elke functieaanroep.
maxItemsPerInvocation MaxItemsPerInvocation (Optioneel) Wanneer deze functie is ingesteld, wordt de maximale hoeveelheid items aangepast die per functie-aanroep worden ontvangen.
startFromBeginning StartFromBeginning (Optioneel) Wanneer deze optie is ingesteld, wordt de trigger gevraagd om wijzigingen te lezen vanaf het begin van de geschiedenis van de verzameling in plaats van de huidige tijd. Dit werkt alleen wanneer de trigger voor het eerst wordt gestart, zoals in volgende uitvoeringen, de controlepunten al zijn opgeslagen. Dit instellen op true wanneer er al leases zijn gemaakt, heeft geen effect.

Wanneer u lokaal ontwikkelt, voegt u uw toepassingsinstellingen toe aan het local.settings.json-bestand in de Values verzameling.

Trigger - gebruik

Voor de trigger is een tweede verzameling vereist die wordt gebruikt voor het opslaan van leases via de partities. Zowel de verzameling die wordt bewaakt als de verzameling die de leases bevat, moet beschikbaar zijn om de trigger te laten werken.

Belangrijk

Als meerdere functies zijn geconfigureerd voor het gebruik van een Azure Cosmos DB-trigger voor dezelfde verzameling, moet elk van de functies een toegewezen leaseverzameling gebruiken of een andere LeaseCollectionPrefix opgeven voor elke functie. Anders wordt slechts één van de functies geactiveerd. Zie de sectie Configuratie voor meer informatie over het voorvoegsel.

De trigger geeft niet aan of een document is bijgewerkt of ingevoegd, maar alleen het document zelf. Als u updates en invoegingen anders moet afhandelen, kunt u dit doen door tijdstempelvelden te implementeren voor invoeging of bijwerken.

Invoer

Bij een Azure Cosmos DB-invoerbinding wordt de SQL-API gebruikt voor het ophalen van een of meer Azure Cosmos DB-documenten en het doorgeven daarvan aan de invoerparameter van de functie. De document-ID of queryparameters kunnen worden bepaald op basis van de trigger die de functie activeert.

Invoer - voorbeeld

Deze sectie bevat de volgende voorbeelden:

De voorbeelden verwijzen naar een eenvoudig ToDoItem type:

namespace CosmosDBSamplesV1
{
    public class ToDoItem
    {
        public string Id { get; set; }
        public string Description { get; set; }
    }
}

Wachtrijtrigger, id opzoeken vanuit JSON

In het volgende voorbeeld ziet u een C#-functie waarmee één document wordt opgehaald. De functie wordt geactiveerd door een wachtrijbericht dat een JSON-object bevat. De wachtrijtrigger parseert de JSON in een object met de naam ToDoItemLookup, dat de id bevat die moet worden opgezocht. Deze id wordt gebruikt om een ToDoItem document op te halen uit de opgegeven database en verzameling.

namespace CosmosDBSamplesV1
{
    public class ToDoItemLookup
    {
        public string ToDoItemId { get; set; }
    }
}
using Microsoft.Azure.WebJobs;
using Microsoft.Azure.WebJobs.Host;

namespace CosmosDBSamplesV1
{
    public static class DocByIdFromJSON
    {
        [FunctionName("DocByIdFromJSON")]
        public static void Run(
            [QueueTrigger("todoqueueforlookup")] ToDoItemLookup toDoItemLookup,
            [DocumentDB(
                databaseName: "ToDoItems",
                collectionName: "Items",
                ConnectionStringSetting = "CosmosDBConnection",
                Id = "{ToDoItemId}")]ToDoItem toDoItem,
            TraceWriter log)
        {
            log.Info($"C# Queue trigger function processed Id={toDoItemLookup?.ToDoItemId}");

            if (toDoItem == null)
            {
                log.Info($"ToDo item not found");
            }
            else
            {
                log.Info($"Found ToDo item, Description={toDoItem.Description}");
            }
        }
    }
}

HTTP-trigger, id opzoeken uit querytekenreeks

In het volgende voorbeeld ziet u een C#-functie waarmee één document wordt opgehaald. De functie wordt geactiveerd door een HTTP-aanvraag waarin een querytekenreeks wordt gebruikt om de id op te zoeken. Deze id wordt gebruikt om een ToDoItem document op te halen uit de opgegeven database en verzameling.

using Microsoft.Azure.WebJobs;
using Microsoft.Azure.WebJobs.Extensions.Http;
using Microsoft.Azure.WebJobs.Host;
using System.Net;
using System.Net.Http;

namespace CosmosDBSamplesV1
{
    public static class DocByIdFromQueryString
    {
        [FunctionName("DocByIdFromQueryString")]
        public static HttpResponseMessage Run(
            [HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)]HttpRequestMessage req,
            [DocumentDB(
                databaseName: "ToDoItems",
                collectionName: "Items",
                ConnectionStringSetting = "CosmosDBConnection",
                Id = "{Query.id}")] ToDoItem toDoItem,
            TraceWriter log)
        {
            log.Info("C# HTTP trigger function processed a request.");
            if (toDoItem == null)
            {
                log.Info($"ToDo item not found");
            }
            else
            {
                log.Info($"Found ToDo item, Description={toDoItem.Description}");
            }
            return req.CreateResponse(HttpStatusCode.OK);
        }
    }
}

HTTP-trigger, id opzoeken uit routegegevens

In het volgende voorbeeld ziet u een C#-functie waarmee één document wordt opgehaald. De functie wordt geactiveerd door een HTTP-aanvraag die routegegevens gebruikt om de id op te geven die moet worden opgezoekd. Deze id wordt gebruikt om een ToDoItem document op te halen uit de opgegeven database en verzameling.

using Microsoft.Azure.WebJobs;
using Microsoft.Azure.WebJobs.Extensions.Http;
using Microsoft.Azure.WebJobs.Host;
using System.Net;
using System.Net.Http;

namespace CosmosDBSamplesV1
{
    public static class DocByIdFromRouteData
    {
        [FunctionName("DocByIdFromRouteData")]
        public static HttpResponseMessage Run(
            [HttpTrigger(
                AuthorizationLevel.Anonymous, "get", "post",
                Route = "todoitems/{id}")]HttpRequestMessage req,
            [DocumentDB(
                databaseName: "ToDoItems",
                collectionName: "Items",
                ConnectionStringSetting = "CosmosDBConnection",
                Id = "{id}")] ToDoItem toDoItem,
            TraceWriter log)
        {
            log.Info("C# HTTP trigger function processed a request.");

            if (toDoItem == null)
            {
                log.Info($"ToDo item not found");
            }
            else
            {
                log.Info($"Found ToDo item, Description={toDoItem.Description}");
            }
            return req.CreateResponse(HttpStatusCode.OK);
        }
    }
}

Invoervoorbeelden overslaan

HTTP-trigger, id opzoeken uit routegegevens, met behulp van SqlQuery

In het volgende voorbeeld ziet u een C#-functie waarmee één document wordt opgehaald. De functie wordt geactiveerd door een HTTP-aanvraag die routegegevens gebruikt om de id op te geven die moet worden opgezoekd. Deze id wordt gebruikt om een ToDoItem document op te halen uit de opgegeven database en verzameling.

using Microsoft.Azure.WebJobs;
using Microsoft.Azure.WebJobs.Extensions.Http;
using Microsoft.Azure.WebJobs.Host;
using System.Collections.Generic;
using System.Net;
using System.Net.Http;

namespace CosmosDBSamplesV1
{
    public static class DocByIdFromRouteDataUsingSqlQuery
    {
        [FunctionName("DocByIdFromRouteDataUsingSqlQuery")]
        public static HttpResponseMessage Run(
            [HttpTrigger(AuthorizationLevel.Anonymous, "get", "post",
                Route = "todoitems2/{id}")]HttpRequestMessage req,
            [DocumentDB(
                databaseName: "ToDoItems",
                collectionName: "Items",
                ConnectionStringSetting = "CosmosDBConnection",
                SqlQuery = "select * from ToDoItems r where r.id = {id}")] IEnumerable<ToDoItem> toDoItems,
            TraceWriter log)
        {
            log.Info("C# HTTP trigger function processed a request.");
            foreach (ToDoItem toDoItem in toDoItems)
            {
                log.Info(toDoItem.Description);
            }
            return req.CreateResponse(HttpStatusCode.OK);
        }
    }
}

Invoervoorbeelden overslaan

HTTP-trigger, meerdere documenten ophalen met behulp van SqlQuery

In het volgende voorbeeld ziet u een C#-functie waarmee een lijst met documenten wordt opgehaald. De functie wordt geactiveerd door een HTTP-aanvraag. De query wordt opgegeven in de SqlQuery kenmerkeigenschap.

using Microsoft.Azure.WebJobs;
using Microsoft.Azure.WebJobs.Extensions.Http;
using Microsoft.Azure.WebJobs.Host;
using System.Collections.Generic;
using System.Net;
using System.Net.Http;

namespace CosmosDBSamplesV1
{
    public static class DocsBySqlQuery
    {
        [FunctionName("DocsBySqlQuery")]
        public static HttpResponseMessage Run(
            [HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)]
                HttpRequestMessage req,
            [DocumentDB(
                databaseName: "ToDoItems",
                collectionName: "Items",
                ConnectionStringSetting = "CosmosDBConnection",
                SqlQuery = "SELECT top 2 * FROM c order by c._ts desc")]
                IEnumerable<ToDoItem> toDoItems,
            TraceWriter log)
        {
            log.Info("C# HTTP trigger function processed a request.");
            foreach (ToDoItem toDoItem in toDoItems)
            {
                log.Info(toDoItem.Description);
            }
            return req.CreateResponse(HttpStatusCode.OK);
        }
    }
}

Invoervoorbeelden overslaan

HTTP-trigger, meerdere documenten ophalen met Behulp van DocumentClient (C#)

In het volgende voorbeeld ziet u een C#-functie waarmee een lijst met documenten wordt opgehaald. De functie wordt geactiveerd door een HTTP-aanvraag. De code maakt gebruik van een DocumentClient exemplaar dat wordt geleverd door de Azure Cosmos DB-binding om een lijst met documenten te lezen. Het DocumentClient exemplaar kan ook worden gebruikt voor schrijfbewerkingen.

using Microsoft.Azure.Documents.Client;
using Microsoft.Azure.Documents.Linq;
using Microsoft.Azure.WebJobs;
using Microsoft.Azure.WebJobs.Extensions.Http;
using Microsoft.Azure.WebJobs.Host;
using System;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Threading.Tasks;

namespace CosmosDBSamplesV1
{
    public static class DocsByUsingDocumentClient
    {
        [FunctionName("DocsByUsingDocumentClient")]
        public static async Task<HttpResponseMessage> Run(
            [HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)]HttpRequestMessage req,
            [DocumentDB(
                databaseName: "ToDoItems",
                collectionName: "Items",
                ConnectionStringSetting = "CosmosDBConnection")] DocumentClient client,
            TraceWriter log)
        {
            log.Info("C# HTTP trigger function processed a request.");

            Uri collectionUri = UriFactory.CreateDocumentCollectionUri("ToDoItems", "Items");
            string searchterm = req.GetQueryNameValuePairs()
                .FirstOrDefault(q => string.Compare(q.Key, "searchterm", true) == 0)
                .Value;

            if (searchterm == null)
            {
                return req.CreateResponse(HttpStatusCode.NotFound);
            }

            log.Info($"Searching for word: {searchterm} using Uri: {collectionUri.ToString()}");
            IDocumentQuery<ToDoItem> query = client.CreateDocumentQuery<ToDoItem>(collectionUri)
                .Where(p => p.Description.Contains(searchterm))
                .AsDocumentQuery();

            while (query.HasMoreResults)
            {
                foreach (ToDoItem result in await query.ExecuteNextAsync())
                {
                    log.Info(result.Description);
                }
            }
            return req.CreateResponse(HttpStatusCode.OK);
        }
    }
}

Invoer - kenmerken

Gebruik in proces C#-klassebibliotheken het kenmerk DocumentDB .

De constructor van het kenmerk neemt de databasenaam en verzamelingsnaam. Zie de volgende configuratiesectie voor informatie over deze instellingen en andere eigenschappen die u kunt configureren.

Invoer - configuratie

De volgende tabel bevat informatie over de bindingsconfiguratie-eigenschappen die u instelt in het bestand function.json en het kenmerk DocumentDB.

function.json-eigenschap Kenmerkeigenschap Beschrijving
type n.v.t. Moet worden ingesteld op documentdb.
direction n.v.t. Moet worden ingesteld op in.
name n.v.t. Naam van de bindingsparameter die het document in de functie vertegenwoordigt.
databaseName DatabaseName De database met het document.
collectionName CollectionName De naam van de verzameling die het document bevat.
id Id De id van het document dat moet worden opgehaald. Deze eigenschap ondersteunt bindingexpressies. Stel de id- en sqlQuery-eigenschappen niet in. Als u geen van beide instellingen instelt, wordt de hele verzameling opgehaald.
sqlQuery SqlQuery Een Azure Cosmos DB SQL-query die wordt gebruikt voor het ophalen van meerdere documenten. De eigenschap ondersteunt runtimebindingen, zoals in dit voorbeeld: SELECT * FROM c where c.departmentId = {departmentId}. Stel de id- en sqlQuery-eigenschappen niet in. Als u geen van beide instellingen instelt, wordt de hele verzameling opgehaald.
verbinding ConnectionStringSetting De naam van de app-instelling met uw Azure Cosmos DB-verbindingsreeks.
partitionKey PartitionKey Hiermee geeft u de partitiesleutelwaarde voor de zoekactie. Kan bindingsparameters bevatten.

Wanneer u lokaal ontwikkelt, voegt u uw toepassingsinstellingen toe aan het local.settings.json-bestand in de Values verzameling.

Invoer - gebruik

Wanneer de functie wordt afgesloten, worden eventuele wijzigingen in het invoerdocument via benoemde invoerparameters automatisch behouden.

Uitvoer

Met de Azure Cosmos DB-uitvoerbinding kunt u een nieuw document schrijven naar een Azure Cosmos DB-database met behulp van de SQL-API.

Uitvoer - voorbeeld

Deze sectie bevat de volgende voorbeelden:

  • Wachtrijtrigger, één document schrijven
  • Wachtrijtrigger, documenten schrijven met behulp van IAsyncCollector

De voorbeelden verwijzen naar een eenvoudig ToDoItem type:

namespace CosmosDBSamplesV1
{
    public class ToDoItem
    {
        public string Id { get; set; }
        public string Description { get; set; }
    }
}

Wachtrijtrigger, één document schrijven

In het volgende voorbeeld ziet u een C#-functie waarmee een document wordt toegevoegd aan een database, met behulp van gegevens in het bericht uit Queue Storage.

using Microsoft.Azure.WebJobs;
using Microsoft.Azure.WebJobs.Host;
using System;

namespace CosmosDBSamplesV1
{
    public static class WriteOneDoc
    {
        [FunctionName("WriteOneDoc")]
        public static void Run(
            [QueueTrigger("todoqueueforwrite")] string queueMessage,
            [DocumentDB(
                databaseName: "ToDoItems",
                collectionName: "Items",
                ConnectionStringSetting = "CosmosDBConnection")]out dynamic document,
            TraceWriter log)
        {
            document = new { Description = queueMessage, id = Guid.NewGuid() };

            log.Info($"C# Queue trigger function inserted one row");
            log.Info($"Description={queueMessage}");
        }
    }
}

Wachtrijtrigger, documenten schrijven met behulp van IAsyncCollector

In het volgende voorbeeld ziet u een C#-functie waarmee een verzameling documenten aan een database wordt toegevoegd met behulp van gegevens die zijn opgegeven in een wachtrijbericht JSON.

using Microsoft.Azure.WebJobs;
using Microsoft.Azure.WebJobs.Host;
using System.Threading.Tasks;

namespace CosmosDBSamplesV1
{
    public static class WriteDocsIAsyncCollector
    {
        [FunctionName("WriteDocsIAsyncCollector")]
        public static async Task Run(
            [QueueTrigger("todoqueueforwritemulti")] ToDoItem[] toDoItemsIn,
            [DocumentDB(
                databaseName: "ToDoItems",
                collectionName: "Items",
                ConnectionStringSetting = "CosmosDBConnection")]
                IAsyncCollector<ToDoItem> toDoItemsOut,
            TraceWriter log)
        {
            log.Info($"C# Queue trigger function processed {toDoItemsIn?.Length} items");

            foreach (ToDoItem toDoItem in toDoItemsIn)
            {
                log.Info($"Description={toDoItem.Description}");
                await toDoItemsOut.AddAsync(toDoItem);
            }
        }
    }
}

Uitvoer - kenmerken

Gebruik in proces C#-klassebibliotheken het kenmerk DocumentDB .

De constructor van het kenmerk neemt de databasenaam en verzamelingsnaam. Zie Uitvoer - configuratie voor informatie over deze instellingen en andere eigenschappen die u kunt configureren. Hier volgt een DocumentDB kenmerkvoorbeeld in een methodehandtekening:

    [FunctionName("QueueToDocDB")]
    public static void Run(
        [QueueTrigger("myqueue-items", Connection = "AzureWebJobsStorage")] string myQueueItem,
        [DocumentDB("ToDoList", "Items", Id = "id", ConnectionStringSetting = "myCosmosDB")] out dynamic document)
    {
        ...
    }

Zie Uitvoer voor een volledig voorbeeld.

Uitvoer - configuratie

De volgende tabel bevat informatie over de bindingsconfiguratie-eigenschappen die u instelt in het bestand function.json en het kenmerk DocumentDB.

function.json-eigenschap Kenmerkeigenschap Beschrijving
type n.v.t. Moet worden ingesteld op documentdb.
direction n.v.t. Moet worden ingesteld op out.
name n.v.t. Naam van de bindingsparameter die het document in de functie vertegenwoordigt.
databaseName DatabaseName De database met de verzameling waarin het document wordt gemaakt.
collectionName CollectionName De naam van de verzameling waarin het document wordt gemaakt.
createIfNotExists CreateIfNotExists Een Booleaanse waarde om aan te geven of de verzameling wordt gemaakt wanneer deze niet bestaat. De standaardwaarde is onwaar omdat nieuwe verzamelingen worden gemaakt met gereserveerde doorvoer, wat gevolgen heeft voor de kosten. Zie voor meer informatie de pagina met prijzen.
partitionKey PartitionKey Wanneer CreateIfNotExists is waar, definieert u het partitiesleutelpad voor de gemaakte verzameling.
collectionThroughput CollectionThroughput Wanneer CreateIfNotExists is waar, definieert u de doorvoer van de gemaakte verzameling.
verbinding ConnectionStringSetting De naam van de app-instelling met uw Azure Cosmos DB-verbindingsreeks.

Wanneer u lokaal ontwikkelt, voegt u uw toepassingsinstellingen toe aan het local.settings.json-bestand in de Values verzameling.

Uitvoer - gebruik

Wanneer u naar de uitvoerparameter in uw functie schrijft, wordt er standaard een document in uw database gemaakt. Dit document heeft een automatisch gegenereerde GUID als document-id. U kunt de document-id van het uitvoerdocument opgeven door de id eigenschap op te geven in het JSON-object dat is doorgegeven aan de uitvoerparameter.

Notitie

Wanneer u de id van een bestaand document opgeeft, wordt het overschreven door het nieuwe uitvoerdocument.

Uitzonderingen en retourcodes

Binding Verwijzing
Azure Cosmos DB HTTP-statuscodes voor Azure Cosmos DB

Volgende stappen