我有这种情况,我想检查在尝试注册时是否已经使用过用户的电子邮件,并在这种情况下抛出错误“用户已经存在”。
这是我的序列:
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"
有没有办法在整个序列中保持我的输入?并且前向组合器可以解决这个问题吗?
答案 0 :(得分:1)
我尝试/whisk.system/combinators/forwarder
,它允许您将参数传递给某个操作,然后指定发送到 next 的参数。即,我有5个参数,让我们将1和2传递给序列中的下一个项目,完成后,将3,4,5传递给下一个。我相信第一项的输出也是如此。
答案 1 :(得分:0)
解决方案非常简单,只需用前向组合器替换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的答案here