我有这个解析器
describe('do not put async before the function keyword!', function () {
uids = process.env.ENV_OBJECTS.split(',');
let outcome;
for(let uid in uids) {
it('Can safely put async before the function here', async function() {
outcome = await getOutcome(uid);
// etc.
});
}
});
但是我还需要在其中包含另一个方法/模型:
SLAccount: (_, { imsUserId, imsToken }, context) =>
new Promise((resolve, reject) => {
addAuth(context, imsUserId, imsToken);
context.model
.getUserAccount(getEndpoint(imsUserId, imsToken))
.then(resolve)
.catch(reject);
}),
所以我需要这样的东西:
getHardware(endpoint) {
return this.connector
.get(
`${endpoint}/...`,
)
.catch(res => this.handleError(res));
}
问题是我不需要同时调用它们,有时我只需要SLAccount: (_, { imsUserId, imsToken }, context) =>
new Promise((resolve, reject) => {
addAuth(context, imsUserId, imsToken);
context.model
.getUserAccount(getEndpoint(imsUserId, imsToken))
.then(resolve)
.catch(reject);
context.model
.getHardware(getEndpoint(imsUserId, imsToken))
.then(resolve)
.catch(reject);
}),
内的那些方法/模型之一即可。
那么解决这个问题的最佳方法是什么?
答案 0 :(得分:1)
GraphQL由需求(查询)驱动。
当您需要account
时,只需进行查询即可。当您需要account
和相关的hardware
时,只需查询两者-其他的解析器将被自动调用。这是graphQL背后的基本思想。查找有关graphQL中的关系的任何教程。