0

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

这是我的序列的样子:

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”之后我丢失了有效负载

在此处输入图像描述

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

4

2 回答 2

1

我会尝试/whisk.system/combinators/forwarder,它可以让您将参数传递给一个动作,然后指定发送到一个动作的参数。即,我有 5 个参数,让我们将 1 和 2 传递给序列中的下一项,完成后,将 3、4、5 传递给下一项。我相信第一项的输出也会随之而来。

于 2017-08-04T17:54:07.047 回答
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 的博客文章中找到有关它的更多详细信息

在这里也看看雷蒙德的答案

于 2017-08-06T08:26:13.510 回答