本文整理汇总了TypeScript中graphql-subscriptions.PubSub类的典型用法代码示例。如果您正苦于以下问题:TypeScript PubSub类的具体用法?TypeScript PubSub怎么用?TypeScript PubSub使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了PubSub类的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的TypeScript代码示例。
示例1: addCount
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: describe
describe('addSchemaLevelResolveFunction', () => {
const pubsub = new PubSub();
const typeDefs = `
type RootQuery {
printRoot: String!
printRootAgain: String!
}
type RootMutation {
printRoot: String!
}
type RootSubscription {
printRoot: String!
}
schema {
query: RootQuery
mutation: RootMutation
subscription: RootSubscription
}
`;
const printRoot = (root: any) => root.toString();
const resolvers = {
RootQuery: {
printRoot,
printRootAgain: printRoot,
},
RootMutation: {
printRoot,
},
RootSubscription: {
printRoot: {
subscribe: () => pubsub.asyncIterator('printRootChannel'),
},
},
};
const schema = makeExecutableSchema({ typeDefs, resolvers });
let schemaLevelResolveFunctionCalls = 0;
addSchemaLevelResolveFunction(schema, root => {
schemaLevelResolveFunctionCalls += 1;
return root;
});
it('should run the schema level resolver once in a same query', () => {
schemaLevelResolveFunctionCalls = 0;
const root = 'queryRoot';
return graphql(
schema,
`
query TestOnce {
printRoot
printRootAgain
}
`,
root,
).then(({ data }) => {
assert.deepEqual(data, {
printRoot: root,
printRootAgain: root,
});
assert.equal(schemaLevelResolveFunctionCalls, 1);
});
});
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 });
//.........这里部分代码省略.........
示例3: done
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:
subscribe: () => pubsub.asyncIterator(COUNT_UPDATED_TOPIC),
示例5:
subscribe: () => pubsub.asyncIterator('printRootChannel'),