本文整理汇总了TypeScript中graphql-subscriptions.PubSub.publish方法的典型用法代码示例。如果您正苦于以下问题:TypeScript PubSub.publish方法的具体用法?TypeScript PubSub.publish怎么用?TypeScript PubSub.publish使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类graphql-subscriptions.PubSub
的用法示例。
在下文中一共展示了PubSub.publish方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的TypeScript代码示例。
示例1: count
export const resolver = (pubsub: PubSub, logger?: Logger) => ({
Query: {
count(obj, args, context: { Count: ICounterRepository }) {
logger.debug('quering the count table');
return context.Count.getCount();
},
},
Mutation: {
async addCount(obj, { amount }, context: { Count: ICounterRepository }) {
logger.debug('adding count...');
await context.Count.addCount(amount);
let count = await context.Count.getCount();
logger.debug('added count and the amount is {%j} ', count);
pubsub.publish(COUNT_UPDATED_TOPIC, { subscribeToCount: { amount: count.amount } });
return count;
},
},
Subscription: {
subscribeToCount: {
subscribe: () => pubsub.asyncIterator(COUNT_UPDATED_TOPIC),
},
},
});
示例2:
.then(({ data: mutationData }) => {
assert.equal(schemaLevelResolveFunctionCalls, 3);
assert.deepEqual(mutationData, { printRoot: mutationRoot });
pubsub.publish('printRootChannel', { printRoot: subscriptionRoot2 });
})
示例3: it
it('should isolate roots from the different operation types', done => {
schemaLevelResolveFunctionCalls = 0;
const queryRoot = 'queryRoot';
const mutationRoot = 'mutationRoot';
const subscriptionRoot = 'subscriptionRoot';
const subscriptionRoot2 = 'subscriptionRoot2';
let subsCbkCalls = 0;
const firstSubsTriggered = new Promise(resolveFirst => {
subscribe(
schema,
parse(`
subscription TestSubscription {
printRoot
}
`),
)
.then(results => {
forAwaitEach(
results as AsyncIterable<ExecutionResult>,
(result: ExecutionResult) => {
if (result.errors) {
return done(
new Error(
`Unexpected errors in GraphQL result: ${result.errors}`,
),
);
}
const subsData = result.data;
subsCbkCalls++;
try {
if (subsCbkCalls === 1) {
assert.equal(schemaLevelResolveFunctionCalls, 1);
assert.deepEqual(subsData, { printRoot: subscriptionRoot });
return resolveFirst();
} else if (subsCbkCalls === 2) {
assert.equal(schemaLevelResolveFunctionCalls, 4);
assert.deepEqual(subsData, {
printRoot: subscriptionRoot2,
});
return done();
}
} catch (e) {
return done(e);
}
done(new Error('Too many subscription fired'));
},
).catch(done);
})
.catch(done);
});
pubsub.publish('printRootChannel', { printRoot: subscriptionRoot });
firstSubsTriggered
.then(() =>
graphql(
schema,
`
query TestQuery {
printRoot
}
`,
queryRoot,
),
)
.then(({ data }) => {
assert.equal(schemaLevelResolveFunctionCalls, 2);
assert.deepEqual(data, { printRoot: queryRoot });
return graphql(
schema,
`
mutation TestMutation {
printRoot
}
`,
mutationRoot,
);
})
.then(({ data: mutationData }) => {
assert.equal(schemaLevelResolveFunctionCalls, 3);
assert.deepEqual(mutationData, { printRoot: mutationRoot });
pubsub.publish('printRootChannel', { printRoot: subscriptionRoot2 });
})
.catch(done);
});
示例4:
.then(todo=>{
pubsub.publish('todoAdded', { ['todoAdded']: todo });
return todo
})