Docs 菜单
Docs 主页
/ /
Atlas App Services

trigger配置文件

在此页面上

  • 常规配置
  • 数据库触发器
  • 身份验证触发器
  • 定时触发器

注意

本页介绍一种旧版配置文件格式。仅当使用已弃用的 realm-cli时才应使用此信息。

使用 App Services CLI 拉取或从用户界面导出的任何配置文件都使用最新配置版本。 有关当前配置文件格式的详细信息,请参阅应用程序配置。

app/
└── triggers/
└── <trigger name>.json

所有Atlas Triggers都符合具有特定变体的基本模式,具体取决于trigger类型。所有trigger配置文件中都存在以下字段:

triggers/<trigger name>.json
{
"name": "<Trigger Name>",
"type": "<Trigger Type>",
"config": {},
"function_name": "<Trigger Function Name>",
"disabled": <Boolean>
}
字段
说明
name
String
trigger名称。长度最多为 64 个字符,并且只能包含 ASCII 字母、数字、下划线和连字符。
type
String

trigger类型。该字段的值决定了确切的配置文件模式。

有效选项:

  • "DATABASE"

  • "AUTHENTICATION"

  • "SCHEDULED"

config
Document

一个文档,其中包含映射到trigger其他配置选项的字段。确切的字段取决于triggertype

function_name
String
trigger在触发时执行的Realm 函数的名称。
event_processors
Document

一个文档,用于配置trigger以在触发时将事件发送到外部事件处理器。不能与function_name一起使用。

有关更多信息,请参阅向 Amazon Web Services Eventbridge 发送trigger事件。

disabled
Boolean
如果为true,trigger将不会侦听任何事件,也不会触发。

数据库触发器配置符合基本trigger模式,并带有附加配置选项,这些选项指定要监视的collection以及何时触发trigger。数据库触发器配置文件中存在以下字段:

triggers/<trigger name>.json
{
"name": "<Trigger Name>",
"type": "DATABASE",
"config": {
"service_name": "<MongoDB Service Name>",
"database": "<Database Name>",
"collection": "<Collection Name>",
"operation_types": ["<Operation Type>", ...],
"full_document": <boolean>,
"full_document_before_change": <boolean>,
"tolerate_resume_errors": <boolean>,
"unordered": <boolean>,
"match": { <Match Filter> },
"project": { <Projection Filter> },
},
"function_name": "<Trigger Function Name>",
"disabled": <Boolean>
}
字段
说明
config.service_name
String
包含监视collection的MongoDB 数据源的名称。您无法在无服务器实例联合数据库实例上定义数据库触发器。
config.database
String
包含监视collection的 MongoDB database 的名称。
config.collection
String
trigger监视的collection的名称。
config.operation_types
String[]

导致trigger触发的一个或多个数据库操作类型的列表。

有效操作类型:

  • "INSERT"

  • "UPDATE"

  • "REPLACE"

  • "DELETE"

提示

从 MongoDB Compass 或 MongoDB Atlas 数据浏览器执行的更新操作会完全替换之前的文档。 因此,这些客户端的更新操作将生成REPLACE更改事件,而不是UPDATE事件。

config.full_document
Boolean

如果true ,则UPDATE 更改事件包括在 字段中应用更改 已修改文档的最新 多数提交fullDocument 版本。

注意

无论此设置如何:

  • INSERTREPLACE事件始终包含fullDocument字段。

  • DELETE events 从不包含fullDocument字段。

config.full_document_before_change
Boolean

如果true ,则更改事件包括在fullDocumentBeforeChange字段中应用更改之前的已修改文档的副本。 除INSERT事件之外的所有更改事件都包含文档原像。

重要

集合级原像设置

文档原像使用存储在 oplog 中的额外信息。 额外的数据可能会对某些应用的性能产生影响。

为给定集合上的任何触发器启用文档原像后,该集合将在 oplog 中包含原像数据,并且该集合上的其他触发器可以使用原像,而不会产生额外开销。

您可以在每个触发器的基础上禁用文档原像,以将原像从变更事件中排除。 无论触发器级别设置如何,collection的 oplog 条目将继续包含原像数据,除非您明确禁用collection的原像。

有关更多信息,请参阅文档原像。

config.tolerate_resume_errors
Boolean

如果为true,则在找不到处理change stream事件所需的令牌时,trigger会自动恢复。

如果启用,则当在集群的 oplog 中找不到此触发器的恢复令牌时,触发器会在下一个相关的变更流事件中自动恢复处理事件。从触发器暂停到触发器恢复执行的所有变更流事件都不会触发触发器。

有关恢复暂停的Atlas Triggers的更多信息,请参阅暂停的Atlas Triggers。

config.unordered
Boolean

如果true ,则表示为此触发器禁用了事件排序。

如果启用了事件排序,此触发器的多次执行操作将根据更改事件的时间戳按顺序进行。如果禁用了事件排序,该触发器的多次执行操作将独立进行。

提示

性能优化

通过禁用事件排序来提高响应批量数据库操作的Atlas Triggers的性能。了解更多信息。

config.match
Document

一个 $match 表达式文档,App Services 使用它来过滤哪些变更事件会导致触发器触发。触发器根据这个匹配表达式评估它收到的所有变更事件对象,仅当给定变更事件的表达式计算结果为 true 时才执行。

注意

对嵌入式字段使用点符号

MongoDB 对匹配表达式中的嵌入式文档执行完全等值匹配。如果要匹配嵌入式文档中的特定字段,请直接使用点符号引用该字段。请参阅 MongoDB Server 手册中的查询嵌入式文档,了解详情。

提示

性能优化

使用$match表达式限制trigger处理的字段数量。了解更多信息。

config.project
Document

一个$project表达式,用于从变更流中的每个事件中选择字段的子集。 您可以使用它来优化trigger的执行。

表达式是一个对象,可以将更改事件中的字段名称映射到 0(不包括该字段)或 1(包括该字段)。表达式的值可以是 01,但不能同时是 01。就是把投影分为两类,即包容性投影和排他性投影:

  • 包容性项目表达式指定要包含在每个更改事件文档中的字段。该表达式是一个对象,它将要包含的字段的名称映射到 1。如果不包含某个字段,则该字段不会包含在预计的更改事件中。

    例子

    以下投影仅包括 _idfullDocument 字段:

    {
    _id: 1,
    fullDocument: 1
    }
  • 独占项目表达式指定要从每个更改事件文档中排除的字段。该表达式是一个对象,它将要包含的字段的名称映射到 0。如果不排除某个字段,它将包含在预计的更改事件中。

    例子

    以下投影排除 _idfullDocument字段:

    {
    _id: 0,
    fullDocument: 0
    }

    注意

    您不能使用投影排除 operation_type 字段。这确保该触发器始终可以检查它是否应该针对给定事件的操作类型运行。

身份验证触发器配置符合基本trigger模式,并带有附加配置选项,这些选项指定要监视的身份验证提供商以及何时触发trigger。在身份验证触发器配置文件中存在以下字段:

triggers/<trigger name>.json
{
"name": "<Trigger Name>",
"type": "AUTHENTICATION",
"config": {
"operation_type": ["<Operation Type>", ...],
"providers": ["<Provider Type>", ...],
},
"function_name": "<Trigger Function Name>",
"disabled": <Boolean>
}
字段
说明
config.operation_type
String

导致trigger触发的身份验证操作类型

有效操作类型:

  • "LOGIN"

  • "CREATE"

  • "DELETE"

config.providers
String[]

trigger监控的身份验证提供者类型列表。

有效的提供商类型:

  • "anon-user"

  • "local-userpass"

  • "api-key"

  • "custom-token"

  • "custom-function"

  • "oauth2-facebook"

  • "oauth2-google"

  • "oauth2-apple"

定时触发器配置符合基本触发器模式,附带指定触发器触发计划的附加配置选项。 定时触发器配置文件中存在以下字段:

triggers/<trigger name>.json
{
"name": "<Trigger Name>",
"type": "SCHEDULED",
"config": {
"schedule": "<CRON expression>"
},
"function_name": "<Trigger Function Name>",
"disabled": <Boolean>
}
字段
说明
config.schedule
String
安排触发器执行的CRON 表达式

来年

什么是 Atlas App Services?