我在Cloudant数据库上编写了一个触发器,该数据库应该将每个新文档转换为Slack通知。
我创建了一系列两个动作:一个准备Slack消息,一个发送消息。要使用IBM Bluemix OpenWhisk提供的包操作发送Slack消息。
Cloudant更改Feed - >准备文本 - > Slack Post - >响应
当触发器向我发送所有Cloudant事件(新的/修改/删除的文档)时,我怎样才能转发Slack新文档事件并忽略已删除文档等内容。
答案 0 :(得分: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()
无效。您必须提供拒绝的理由。