Активировать подписку Apollo на более позднее время с помощью повестки дня - PullRequest
0 голосов
/ 12 мая 2019

Я работаю с Apollo, чтобы сделать возможным запуск подписки позднее по расписанию. Я решил использовать Повестка дня для планирования на моем сервере NodeJS.

Я подумал, может быть, я мог бы использовать константу pubsub с тем же идентификатором 'newNotification' для запуска подписки. Но подписка не срабатывает, только событие Повестка дня.

Функция «Моя повестка дня»:

const schedule = async (options) => {

    const {name, time, data} = options

    // Don't do anything until agenda server is ready

    await new Promise(resolve => agenda.once('ready', resolve));

    // define the agenda type
    agenda.define(name, (job, done) => {
        const {user} = job.attrs.data;
        console.log(`Hello, World! ${user}`);
        pubsub.publish('newNotification', {}, { user: user });
        done()
    });

    // Define and serve the agenda
    agenda.schedule(time, name, data);

}

schedule({
  name: "My event",
  time: moment().add(20, 's').toDate(),
  data: {
    user: "5c920329756c52831cf45f0b"
  }
})

Мой распознаватель подписки выглядит так:

    Subscription: {
        newNotification: {
            subscribe: withFilter(
                () => pubsub.asyncIterator('newNotification'),
                (payload, variables) => {
                    return payload.user === variables.user;
                },
            )
        }
    },
...