1
我正在嘗試使用GraphQL和Apollo解決REST查詢。如何使用一個查詢來解決graphQL中的許多Rest輪往返行程?
我休息的數據看起來像這樣
傳遞一個基金,ID爲分裂解析器返回一個 - > [拆分陣列] - >每個分割具有donation_id - >我要使用該ID來獲取{捐贈}從單獨的休息端點
這裏對象是我的架構
export const schema = [`
schema {
query: RootQuery
}
type RootQuery {
Splits(id: Int!): [Splits]
}
type Splits {
amount_in_cents:Int
donation_id:Int
fund_id:Int
id:Int
memo:String
donation(donation_id: Int): Donation
}
type Donation {
amount_in_cents: Int
bank_name: String
}
`];
這裏是我的解析器文件
import rp from 'request-promise';
const DTBaseURL = 'https://restendpointdomainhere.com/';
const getFromDT = (getQuery) => {
const data = rp(DTBaseURL + getQuery, {
'auth': {
"user": Meteor.settings.endpoint.user,
"pass": Meteor.settings.endpoint.pass,
}
})
.then((res) => JSON.parse(res))
.then((res) =>{
return res;
});
return data;
};
export default resolveFunctions = {
RootQuery: {
Splits(root, args, context){
let newValue = [];
const getQuery = 'funds/' + args.id + '/splits.json';
const data = getFromDT(getQuery)
.then((res) => {
res.forEach(function (donationSplit) {
newValue.push(donationSplit.split);
});
return newValue;
});
return data;
},
donation(root, args, context){
console.log(args);
const getQuery = 'donations/' + args.donation_id + '.json';
const data = getFromDT(getQuery)
.then((res) => {
return res.donation;
});
return data;
}
}
};
任何查詢我@ @/graphql讓我這個錯誤消息。
{
"errors": [
{
"message": "Resolve function missing for \"Splits.donation\""
}
]
}
這裏的任何幫助表示讚賞。
感謝。現在如何讓donation_id從查詢響應傳遞到這個解析器?以下是我在GraphiQL { 拆分(ID:71455){ amount_in_cents donation_id 捐款(donation_id:donation_id){ amount_in_cents }} } 的 – JoshJoe
'donation'解析器將得到的對象,你作爲第一個參數返回'Splits'解析器,並將所有GraphQL參數(包括donation_id)作爲第二個參數返回。 – helfer
所以從你的描述看來,你甚至不需要你的字段中的donation_id參數,因爲每個分割都只有一個捐獻,所以donation_id可以是捐贈解析器獲得的分割對象的一部分作爲第一個參數。 – helfer