Ich versuche, eine REST-Abfrage mit GraphQL und Apollo aufzulösen.Wie kann ich eine Abfrage verwenden, um viele Rest-Rundreisen in graphQL aufzulösen?
Meine Rest Daten wie folgt aussieht
zu einem Spagat Resolver einen Fonds ID Pass, die eine zurückgibt -> [Splits array] -> jeder Split ein donation_id hat -> Ich möchte, dass ID nutzen, um die { Spende} Objekt aus einem separaten Ruhe Endpunkt
hier ist mein Schema
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
}
`];
Und hier ist meine Resolver-Datei
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;
}
}
};
Jede Abfrage, die ich mache @/graphql ruft mir diese Fehlermeldung.
{
"errors": [
{
"message": "Resolve function missing for \"Splits.donation\""
}
]
}
Jede Hilfe hier wird geschätzt.
Danke. Wie kann ich die donation_id nun von der Abfrageantwort in diesen Resolver übergeben? Hier ist, was ich habe in GraphiQL { Splits (id: 71455) { amount_in_cents donation_id Spende (donation_id: donation_id) { amount_in_cents } } } – JoshJoe
die 'donation' Resolver wird das Objekt erhalten, die Sie Als erstes Argument wird der Resolver 'Splits' und als zweites Argument alle GraphQL-Argumente (einschließlich donation_id) zurückgegeben. – helfer
Aus Ihrer Beschreibung geht hervor, dass Sie das Argument donation_id nicht einmal in Ihrem Feld benötigen, da jeder Split genau eine Spende hat, also kann die spenden_id Teil des geteilten Objekts sein, das der Spende-Resolver als erstes Argument bekommt. – helfer