你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

Scripts.CreateTriggerAsync 方法

定义

在 Azure Cosmos DB 服务中创建一个触发器作为异步操作。

public abstract System.Threading.Tasks.Task<Microsoft.Azure.Cosmos.Scripts.TriggerResponse> CreateTriggerAsync (Microsoft.Azure.Cosmos.Scripts.TriggerProperties triggerProperties, Microsoft.Azure.Cosmos.RequestOptions requestOptions = default, System.Threading.CancellationToken cancellationToken = default);
abstract member CreateTriggerAsync : Microsoft.Azure.Cosmos.Scripts.TriggerProperties * Microsoft.Azure.Cosmos.RequestOptions * System.Threading.CancellationToken -> System.Threading.Tasks.Task<Microsoft.Azure.Cosmos.Scripts.TriggerResponse>
Public MustOverride Function CreateTriggerAsync (triggerProperties As TriggerProperties, Optional requestOptions As RequestOptions = Nothing, Optional cancellationToken As CancellationToken = Nothing) As Task(Of TriggerResponse)

参数

triggerProperties
TriggerProperties

TriggerProperties 对象。

requestOptions
RequestOptions

(可选) 存储过程请求的选项。

cancellationToken
CancellationToken

(表示请求取消的可选) CancellationToken

返回

表示异步操作的服务响应的任务对象。

例外

如果未 triggerProperties 设置 。

表示异步处理期间发生的故障的合并。 在 InnerExceptions 中查找实际异常 ()

此异常可以封装许多不同类型的错误。 若要确定特定错误,请始终查看 StatusCode 属性。 创建文档时可能会获取的一些常见代码包括:

StatusCode异常原因
400BadRequest - 这意味着所提供的请求出错。 可能是没有为新触发器提供 ID,或者正文格式不正确。
403禁止 - 已达到提供的集合的触发器配额。 请联系支持人员以增加此配额。
409冲突 - 这意味着 , TriggerProperties 其 ID 与所提供的 ID 匹配。
413RequestEntityTooLarge - 这意味着尝试创建的 主体 TriggerProperties 太大。

示例

这会创建触发器,然后在创建项中使用触发器。

Scripts scripts = this.container.Scripts;
TriggerResponse triggerResponse = await scripts.CreateTriggerAsync(
    new TriggerProperties
    {
        Id = "addTax",
        Body = @"function AddTax() {
            var item = getContext().getRequest().getBody();

            // calculate the tax.
            item.tax = item.cost * .15;

            // Update the request -- this is what is going to be inserted.
            getContext().getRequest().setBody(item);
        }",
        TriggerOperation = TriggerOperation.All,
        TriggerType = TriggerType.Pre
    });

ItemRequestOptions options = new ItemRequestOptions()
{
    PreTriggers = new List<string>() { triggerResponse.Id },
};

// Create a new item with trigger set in the request options
ItemResponse<dynamic> createdItem = await this.container.Items.CreateItemAsync<dynamic>(item.status, item, options);
double itemTax = createdItem.Resource.tax;

适用于