2016-11-24 17 views
1

Cloudantデータベースにトリガを作成しています。新しいトリガをSlack通知に変換する必要があります。OpenWhiskでシーケンスフローを中断するにはどうすればよいですか?

私は2つのアクションのシーケンスを作成しました.1つはスラックメッセージを準備し、もう1つはスラックメッセージを送信します。スラック・メッセージを送信するには、IBM Bluemix OpenWhiskが提供するパッケージ・アクションを使用しています。 >テキストを準備 - - >ポストスラック -

Cloudant変更はフィード>トリガとして応答

は、どのように私は前方にのみスラックすることができ、私のすべてのCloudantのイベント(新規/変更/削除された文書)を送ります新しい文書のイベントと削除された文書のようなものを無視します。

答えて

2

は、同期処理のために、単に

function main(doc) { 
    if (doc._deleted) { 
    // ignore deleted documents 
    return { error: "ignoring deleted doc" }; 
    } else { 
    // prepare the text for the Slack post action 
    const slackMessage = ... 
    return { text: slackMessage }; 
    } 
} 

return new Error("ignoring deleted doc")があまりにも働く私たちの行動にエラーを返します。

Promiseオブジェクトを使用すると、reject(reason)を呼び出して、シーケンスのフローを中断できます。

function main(doc) { 
    return new Promise((resolve, reject) => { 
    if (doc._deleted) { 
     // ignore deleted documents 
     reject({ error: "ignoring deleted doc" }); 
    } else { 
     // prepare the text for the Slack post action 
     const slackMessage = ... 
     resolve({ text: slackMessage }); 
    } 
    }; 
} 

rejectを呼び出すと、シーケンスフローが停止します。 reject('interrupted!'),reject(new Error('interrupted!'),reject({ error: 'interrupted!' })のいずれかです。

警告:reject()は機能しません。拒否する理由を提示する必要があります。

関連する問題