【发布时间】:2019-06-19 19:13:24
【问题描述】:
我有这个架构:
type Invoice {
id: ID! @unique
description: String
charge: Charge
}
type Charge {
id: ID! @unique
amount: Float
dataFromAPI: DataFromAPI
}
type DataFromAPI {
id: ID! @unique
status: String
}
在查询解析器中,我有:
async function charge(parent, args, ctx, info) {
chargeData = await ctx.db.query.charge(args, info)
chargeData.dataFromAPI = await DO_THE_API_CALL_TO_RETRIEVE_DATA()
return chargeData
}
和
async function invoice(parent, args, ctx, info) {
invoiceData = await ctx.db.query.invoice(args, info)
return invoiceData
}
查询:
query ChargeQuery {
charge {
id
amount
dataFromAPI
}
}
将返回
{
charge {
id: '232323'
amount: 323
dataFromAPI: 'GREAT! DATA IS FROM API'
}
}
但是这个查询:
query InvoiceQuery {
invoice {
id
description
charge {
id
amount
dataFromAPI
}
}
}
会回来
{
Invoice {
id: '7723423',
description:'yeah',
charge {
id: '232323'
amount: 323
dataFromAPI: null
}
}
}
dataFromAPI 为空,因为我没有在此解析器中调用 API。
我应该在哪里调用函数DO_THE_API_CALL_TO_RETRIEVE_DATA()。
在每个解析器中?我想这样做是不可扩展的。
【问题讨论】: