如何使用以下函数在 directus 中创建流

Lum*_*ume 6 javascript node.js directus

我有一个自定义(编码)钩子,其工作原理如下:

\n
    \n
  • 集合已更新
  • \n
  • 是集合“事件”吗?
  • \n
  • 是更新的字段之一:time_show_start、time_show_end,...
  • \n
  • 从集合中获取所有想要接收邮件的联系人
  • \n
  • 向这些联系人发送一封邮件,其中包含有关该活动的一些信息(包括旧时间和新时间)
  • \n
\n

它应该看起来像这样,但我就是无法让它工作\n在此输入图像描述

\n
\nmodule.exports = function registerHook({ action }, { services, exceptions }) {\n  const { MailService, ItemsService } = services;\n  const { ServiceUnavailableException, ForbiddenException } = exceptions;\n\n  // Send mail to admin when event time is updated\n  action(\'items.update\', async ({ keys, collection, payload }, { schema, accountability }) => {\n    if (collection !== \'events\') return;\n    if (\n      !payload.time_get_in &&\n      !payload.time_setup_start &&\n      !payload.time_setup_end &&\n      !payload.time_soundcheck_start &&\n      !payload.time_soundcheck_end &&\n      !payload.time_dinner &&\n      !payload.time_doors &&\n      !payload.time_show_start &&\n      !payload.time_show_end &&\n      !payload.time_curfew_live_music &&\n      !payload.time_curfew_guests\n    ) {\n      return;\n    }\n\n    const eventsService = new ItemsService(\'events\', { accountability: accountability, schema: schema });\n    const contactsService = new ItemsService(\'contacts\', { accountability: accountability, schema: schema });\n    const mailService = new MailService({ schema });\n\n    const contacts = await contactsService.readByQuery({ filter: { getsmailon_eventtimechange: { _eq: true } } });\n\n    contacts.forEach(async (contact) => {\n      keys.forEach(async (el) => {\n        // get event\n        let event = null;\n        try {\n          event = await eventsService.readOne(el, { fields: [\'*\'] });\n        } catch (error) {\n          console.error(error);\n          throw new ServiceUnavailableException(error);\n        }\n\n        // send mail\n        try {\n          await mailService.send({\n            to: contact.email,\n            subject: \'Zeit der Veranstaltung \' + event.name + \' ge\xc3\xa4ndert\',\n            text: \'Zeit der Veranstaltung <b>\' + event.name + \'</b> ge\xc3\xa4ndert\',\n            template: {\n              name: \'event-time-update\',\n              data: {\n                collection: collection,\n                event: event,\n                payload: payload,\n              },\n            },\n          });\n          console.log(\'mail sent for event\', event.id);\n        } catch (error) {\n          console.error(error);\n          throw new ServiceUnavailableException(error);\n        }\n      });\n    });\n\n    return;\n  });\n};\n\n
Run Code Online (Sandbox Code Playgroud)\n