我有这样的模式:
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()
在每个解析器中?我想这样做是不可行的。