如何使用openWhisk转发器组合器转发cloudant动作周围的参数

时间:2017-08-04 02:08:52

标签: openwhisk

我有这种情况,我想检查在尝试注册时是否已经使用过用户的电子邮件,并在这种情况下抛出错误“用户已经存在”。

这是我的序列:

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"

enter image description here

有没有办法在整个序列中保持我的输入?并且前向组合器可以解决这个问题吗?

2 个答案:

答案 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