Feathersjs: как отправить ответ и после этого вызвать функцию?

1

У меня был код, отлично работающий для конечной точки REST, в которой было сообщение:

  1. созданный в базе данных
  2. stepA обработан
  3. когда stepA был в порядке, ответное сообщение было возвращено
  4. stepB был обработан.

Это был код:

  // POST single message
  app.post('/message', (req, res) => {
    const url = req.body.properties.url
    const image = req.body.properties.image
    const extraField = req.body.properties.extraField
    db.message.create({
      url: url,
      image: image,
    })
      .then(() => myProcess(extraField, 'stepA'))
      .then(newMessage => res.json(newMessage))
      .then(() => myProcess(extraField, 'stepB'))
  })

Теперь я пытаюсь использовать то же самое с использованием feathersjs, но я не знаю, как сделать 2, 3, 4 точно.

У меня теперь есть метод AFTER для метода создания службы сообщений:

module.exports = function (options = {}) { // eslint-disable-line no-unused-vars
  return function processNewMessage (hook) {

    const { extraField } = hook.data.properties
    Promise.resolve(myProcess(extraField, 'stepA'))
      .then( <<NO-IDEA>> ) // Send RESPONSE!!
      .then(() => myProcess(extraField, 'stepB'))

    return Promise.resolve(hook);
  };
};

Поэтому мой вопрос сводится к следующему: как я могу отправить ответ и затем запустить "myProcess stepB" с помощью feathersjs?

Althoug это "наследие", я думаю, что это может быть актуально.

Теги:
feathersjs

1 ответ

0
Лучший ответ

Ответы на часто задаваемые вопросы feathersjs! Как выполнить обработку после отправки ответа пользователю:

Это зависит от обещания, которое вы вернетесь в свой крючок. Вот пример крючка, который отправляет электронное письмо, но не ждет сообщения об успешном завершении.

function (hook) {

  // Send an email by calling to the email service.
  hook.app.service('emails').create({
    to: '[email protected]',
    body: 'You are so great!'
  });

  // Send a message to some logging service.
  hook.app.service('logging').create(hook.data);

  // Return a resolved promise to immediately move to the next hook
  // and not wait for the two previous promises to resolve.
  return Promise.resolve(hook);
}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню