Ich frage mich, ob es eine Möglichkeit gibt, unnötige Aufrufe in meinem Resolver zu vermeiden.Wie man die Antwort des Apollo-Server-Resolvers zwischenspeichert/wieder verwendet
Mein Resolvern sieht wie folgt aus: (minimiert)
Transaction: {
bkFrom(transaction) {
return transaction.getFrom(); //<-- CACHE THIS?
},
bkTo(transaction) {
return transaction.getTo(); //<-- CACHE THIS?
},
type(transaction) {
return new Promise(async function(resolve, reject) {
const [From, To] = await Promise.all([
transaction.getFrom(), //<-- CACHE THIS? If bkFrom() is already triggered
transaction.getTo(), //<-- CACHE THIS? If is bkTo() already triggered
]);
switch (true) {
case From.isKonto && To.isKonto:
resolve(TransactionType.INTERN);
case !From.isKonto && To.isKonto:
resolve(TransactionType.INCOMING);
case From.isKonto && !To.isKonto:
resolve(TransactionType.OUTGOING);
default:
resolve(null);
}
});
},
},
Und wenn ich dies wie folgt mit etwas fragen:
getTansactions(limit: 10) {
type
bkFrom {
id
name
isKonto
}
bkTo {
id
name
isKonto
}
}
Es wäre transaction.getFrom();
und transaction.getTo();
zweimal anrufen. Gibt es eine Möglichkeit, diese zweimal zu vermeiden? Wie "Caching" wenn es von der gleichen Anfrage ist?
Dies würde die getTo() und getFrom() auslösen, auch wenn 'type' und' bkFrom'/'bkTo' nicht angefordert wird, oder? – Skaronator
Ja, das ist der Nachteil dieses Ansatzes. Siehe Bearbeiten für eine andere Idee. –