如何使用 openWhisk 转发器组合器围绕 cloudant 操作转发参数
How to use openWhisk forwarder combinator to forward parameters around a cloudant action
我有这种情况,我想在尝试注册时检查用户的电子邮件是否已被使用,并在这种情况下抛出错误“用户已存在”。
这是我的序列的样子:
Input action
-> CloudnAnt EXE QUERY-Find
-> Validate email action
-> CloudnAnt create User/Throw user already exists error action
我的 json 有效负载如下所示:
{email: 'blahblah@domain.com', pass: "pass"}
问题是我无法控制 cloudnant 预定义操作的输出,因此我在第二次操作后丢失了负载 "CloudnAnt EXE QUERY-Find User with email action"
有没有办法在整个序列中保持我的输入?正向组合器可以解决这个问题吗?
我会尝试 /whisk.system/combinators/forwarder
,它允许您将参数传递给一个动作,然后指定发送到 下一个 动作的参数。即,我有 5 个参数,让我们将 1 和 2 传递给序列中的下一项,完成后,将 3、4、5 传递给下一项。我相信第一项的输出也是如此。
解决方案非常简单,只需将 cloudant 操作替换为前向组合器,它将调用 cloudant 操作并转发其周围的参数。
要调用 cloudant 操作,您需要获取操作的完整路径,其中包括命名空间和数据库名称,如下所示:
/namespace/dbname/actionName
在我的例子中是 /sansan/users/exec-query-find
因此,如果您想检查电子邮件是否存在于您的 cloudant 数据库中,并保留原始参数,只需将以下有效负载传递给您的 cloudant 操作
{
"data":{...},// some data you want to keep after the cloudant query
"query": {
"selector": {
"email": "email@domain.com"
}
},
"$actionName": "/sansan/users/exec-query-find",
"$forward": [// list of params you want forward
"data"
],
"$actionArgs": [ // list of params you want to feed the action
"query"
]
}
在 运行 序列之后,输出应如下所示:
{
"data": {...}, // your data
"docs": [...]// cloudant query results
}
前向组合器的文档很少,但您可以在 Raymond Camden's blog post
中找到更多详细信息
也看看Raymond的回答
我有这种情况,我想在尝试注册时检查用户的电子邮件是否已被使用,并在这种情况下抛出错误“用户已存在”。
这是我的序列的样子:
Input action
-> CloudnAnt EXE QUERY-Find
-> Validate email action
-> CloudnAnt create User/Throw user already exists error action
我的 json 有效负载如下所示:
{email: 'blahblah@domain.com', pass: "pass"}
问题是我无法控制 cloudnant 预定义操作的输出,因此我在第二次操作后丢失了负载 "CloudnAnt EXE QUERY-Find User with email action"
有没有办法在整个序列中保持我的输入?正向组合器可以解决这个问题吗?
我会尝试 /whisk.system/combinators/forwarder
,它允许您将参数传递给一个动作,然后指定发送到 下一个 动作的参数。即,我有 5 个参数,让我们将 1 和 2 传递给序列中的下一项,完成后,将 3、4、5 传递给下一项。我相信第一项的输出也是如此。
解决方案非常简单,只需将 cloudant 操作替换为前向组合器,它将调用 cloudant 操作并转发其周围的参数。
要调用 cloudant 操作,您需要获取操作的完整路径,其中包括命名空间和数据库名称,如下所示:
/namespace/dbname/actionName
在我的例子中是 /sansan/users/exec-query-find
因此,如果您想检查电子邮件是否存在于您的 cloudant 数据库中,并保留原始参数,只需将以下有效负载传递给您的 cloudant 操作
{
"data":{...},// some data you want to keep after the cloudant query
"query": {
"selector": {
"email": "email@domain.com"
}
},
"$actionName": "/sansan/users/exec-query-find",
"$forward": [// list of params you want forward
"data"
],
"$actionArgs": [ // list of params you want to feed the action
"query"
]
}
在 运行 序列之后,输出应如下所示:
{
"data": {...}, // your data
"docs": [...]// cloudant query results
}
前向组合器的文档很少,但您可以在 Raymond Camden's blog post
中找到更多详细信息也看看Raymond的回答