1

メッセージが次のRESTエンドポイントで正常に機能するコードがいくつかありました。

  1. データベースに作成された
  2. stepAが処理されました
  3. stepA が OK の場合、応答メッセージが返されました
  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 を正確に行う方法がわかりません。

メッセージ サービスの create メソッド用の 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);
  };
};

つまり、私の質問は次のようになります: 応答を送信し、その後、feathersjs を使用して 'myProcess stepB' をトリガーするにはどうすればよいですか?

これは「レガシー」ですがそれでも関連性があると思います。

4

1 に答える 1

0

それはfeathersjsのFAQで答えられています!ユーザーに応答を送信した後の処理方法:

それは、フックで返す約束に依存します。電子メールを送信するが成功メッセージを待たないフックの例を次に示します。

function (hook) {

  // Send an email by calling to the email service.
  hook.app.service('emails').create({
    to: 'user@email.com',
    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);
}
于 2017-10-25T14:08:13.050 に答える