我阅读并遵循了在Google云修复触发器上找到的例子。我在下面介绍了这些例子。
gcloud functions deploy my-second-event \
--entry-point CloudEventFunction2.Function \
--runtime dotnet3 \
--trigger-event "providers/cloud.firestore/eventTypes/document.create" \
--trigger-resource "projects/my-projectId/databases/(default)/documents/messages/{pushId}" \请注意,此资源的/documents/messages/{pushId}部分与"Deploy“部分保持一致。
然而,再往下一点--触发资源'NAME‘被描述为.
函数将侦听的完全限定的数据库路径。这应该符合以下格式:"projects/YOUR_PROJECT_ID/databases/(default)/documents/PATH“{pushId}文本是在指定文档路径时描述的通配符参数。
现在,当我们按照“指定文档路径”的链接进行操作时,我们会感到困惑。我相信我理解“函数只响应文档更改,不能监视特定字段或集合”的含义。然而,如果我们查看上面的/documents/messages/{pushId} -‘document’是一个集合,而'messages‘是一个文档。根据上述仅响应文档更改的函数的限制,我不希望{ pushId }事件触发(因为pushId要么是集合,要么是字段(它直接位于文档“消息”上)。
似乎需要指出的是,将{pushId}外卡直接放在收藏的“文档”之下;
--trigger-resource "projects/my-projectId/databases/(default)/documents/{pushId}"
这意味着当一个新消息被推送到文档集合时,云事件就会被触发。
不过,上面的变化……
ERROR: (gcloud.functions.deploy) ResponseError: status=[400], code=[Ok], message=[
The request has errors
Problems:
event_trigger:
Expected value {pushId} to match regular expression [^/]+/[^/]+(/[^/]+/[^/]+)*
]虽然我肯定我做错了什么,但我很难从上面的观察中理解,我的功能也没有被触发。
对于如何理解这一点,或者至少如何让我的函数在创建时触发,我将非常感激。
我使用的“函数”来自Visual (2022)提供的dotnet模板。
发布于 2022-04-11 17:26:01
我来晚了,但是如果您的数据库中的集合实际上名为documents,那么您的路径将如下所示:
--trigger-resource "projects/my-projectId/databases/(default)/documents/documents/{pushId}"
documents的第二个实例是您正在观察的集合的字面名称。
https://stackoverflow.com/questions/70717410
复制相似问题