Azure Cosmos DB-bindingen voor Azure Functions 1.x

In dit artikel wordt uitgelegd hoe u werkt 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 voor informatie over het gebruik van deze bindingen in Functions 2.x en hoger.

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

Notitie

Azure Cosmos DB-bindingen worden alleen ondersteund voor gebruik met de SQL-API. Voor alle andere Azure Cosmos DB-API's moet u toegang krijgen 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 voor Table.

Pakketten - Functions 1.x

De Azure Cosmos DB-bindingen voor Functions versie 1.x zijn beschikbaar in het Microsoft.Azure.WebJobs.Extensions.DocumentDB NuGet-pakket, 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 deze binding 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

Trigger

De Azure Cosmos DB-trigger maakt gebruik van de Azure Cosmos DB-wijzigingenfeed 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 C#-functie die wordt aangeroepen wanneer er invoegingen of updates zijn in de opgegeven database en verzameling.

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 voor C#-klassebibliotheken in verwerking het kenmerk CosmosDBTrigger .

De constructor van het kenmerk neemt de databasenaam en verzamelingsnaam. Zie Trigger - configuratie voor meer informatie over deze instellingen en andere eigenschappen die u kunt configureren. Hier volgt een voorbeeld van een CosmosDBTrigger kenmerk 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 de 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 met de connection string die wordt gebruikt om verbinding te maken met het Azure Cosmos DB-account dat wordt bewaakt.
databaseName Databasenaam 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 connection string naar de service die de leaseverzameling bevat. Wanneer dit niet is ingesteld, wordt de connectionStringSetting waarde gebruikt. Deze parameter wordt automatisch ingesteld wanneer de binding wordt gemaakt in de portal. De connection string 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 dit 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 dit niet is ingesteld, wordt de waarde leases gebruikt.
createLeaseCollectionIfNotExists CreateLeaseCollectionIfNotExists (Optioneel) Als deze optie is ingesteld op true, wordt de verzameling leases automatisch gemaakt wanneer deze nog niet bestaat. De standaardwaarde is false.
leasesCollectionThroughput LeasesCollectionThroughput (Optioneel) Hiermee definieert u 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 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 dit is ingesteld, wordt in milliseconden de vertraging tussen het pollen van een partitie voor nieuwe wijzigingen op de feed gedefinieerd, nadat alle huidige wijzigingen zijn leeggelopen. De standaardwaarde is 5000 (5 seconden).
leaseAcquireInterval LeaseAcquireInterval (Optioneel) Wanneer dit is ingesteld, wordt in milliseconden het interval gedefinieerd voor het starten van een taak die moet worden berekend als partities gelijkmatig worden verdeeld over bekende hostinstanties. De standaardwaarde is 13000 (13 seconden).
leaseExpirationInterval LeaseExpirationInterval (Optioneel) Wanneer deze optie is ingesteld, wordt in milliseconden het interval gedefinieerd waarvoor de lease wordt opgenomen voor een lease die een partitie vertegenwoordigt. Als de lease niet binnen dit interval wordt verlengd, verloopt deze en wordt het eigendom van de partitie verplaatst naar een ander exemplaar. De standaardwaarde is 60000 (60 seconden).
leaseRenewInterval LeaseRenewInterval (Optioneel) Wanneer deze optie is ingesteld, wordt in milliseconden het vernieuwingsinterval gedefinieerd voor alle leases voor partities die momenteel door een exemplaar worden bewaard. De standaardwaarde is 17000 (17 seconden).
checkpointFrequentie CheckpointFrequency (Optioneel) Wanneer dit is ingesteld, wordt in milliseconden het interval tussen leasecontrolepunten gedefinieerd. De standaardwaarde is altijd na elke functie-aanroep.
maxItemsPerInvocation MaxItemsPerInvocation (Optioneel) Wanneer dit is ingesteld, wordt het maximum aantal items dat per functie-aanroep wordt ontvangen, aangepast.
startFromBeginning StartFromBeginning (Optioneel) Wanneer deze optie is ingesteld, wordt aan de trigger aangegeven dat wijzigingen moeten worden gelezen 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, omdat 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 in het bestand local.settings.json in de Values verzameling.

Trigger - gebruik

De trigger vereist een tweede verzameling die wordt gebruikt om leases over de partities op te slaan. De trigger werkt alleen als de verzameling die de leases bevat, zowel de verzameling die wordt bewaakt als de verzameling die de leases bevat.

Belangrijk

Als er 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 biedt alleen het document zelf. Als u updates en invoegingen anders wilt afhandelen, kunt u dit doen door tijdstempelvelden te implementeren voor invoeging of update.

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 waarmee de functie wordt geactiveerd.

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 van 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 opgezoekt. 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);
        }
    }
}

Voorbeelden van invoer overslaan

HTTP-trigger, id opzoeken van 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 opgezoekt. 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);
        }
    }
}

Voorbeelden van invoer 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);
        }
    }
}

Voorbeelden van invoer 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 van 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 C#-klassebibliotheken in proces het kenmerk DocumentDB .

De constructor van het kenmerk neemt de databasenaam en verzamelingsnaam. Zie de volgende configuratiesectie voor informatie over de 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 Databasenaam 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 niet zowel de eigenschappen id als sqlQuery in. Als u geen van beide 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 niet zowel de eigenschappen id als sqlQuery in. Als u geen van beide instelt, wordt de hele verzameling opgehaald.
connection ConnectionStringSetting De naam van de app-instelling die uw Azure Cosmos DB-connection string bevat.
partitionKey PartitionKey Hiermee geeft u de waarde van de partitiesleutel voor de zoekactie. Kan bindingsparameters bevatten.

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

Invoer - gebruik

Wanneer de functie wordt afgesloten, worden wijzigingen die via benoemde invoerparameters in het invoerdocument zijn aangebracht, 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 die in het bericht van Queue Storage zijn opgegeven.

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 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 JSON-bericht in een wachtrij.

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 C#-klassebibliotheken in proces het kenmerk DocumentDB .

De constructor van het kenmerk neemt de databasenaam en verzamelingsnaam. Zie Uitvoer - configuratie voor meer informatie over deze instellingen en andere eigenschappen die u kunt configureren. Hier volgt een voorbeeld van een DocumentDB kenmerk 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 Databasenaam 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 false omdat nieuwe verzamelingen worden gemaakt met gereserveerde doorvoer, wat gevolgen heeft voor de kosten. Zie de pagina prijzen voor meer informatie.
partitionKey PartitionKey Wanneer CreateIfNotExists waar is, definieert u het partitiesleutelpad voor de gemaakte verzameling.
collectionThroughput CollectionThroughput Wanneer CreateIfNotExists waar is, definieert de doorvoer van de gemaakte verzameling.
connection ConnectionStringSetting De naam van de app-instelling die uw Azure Cosmos DB-connection string bevat.

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

Uitvoer - gebruik

Wanneer u schrijft naar de uitvoerparameter in uw functie, wordt standaard een document gemaakt in uw database. 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 dit overschreven door het nieuwe uitvoerdocument.

Uitzonderingen en retourcodes

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

Volgende stappen