Je suis en train de jouer avec GraphQL-JS en ce moment, le câblage jusqu'à un backend MariaDB.Type de streaming GraphQL?
J'ai compris comment retourner un jeu de résultats:
const queryType = new GraphQLObjectType({
name: 'Query',
fields:() => ({
users: {
type: new GraphQLList(userType),
resolve: (root, args) => new Promise((resolve, reject) => {
db.query('select * from users', (err, rows, fields) => {
if(err) return reject(err);
resolve(rows);
});
}),
}
})
});
Ce qui est assez cool, mais le library I'm using me permet aussi stream results, ligne par ligne.
Est-ce que GraphQL a quelque chose pour faciliter cela?
Pour autant que je sache, GraphQLList
attend un tableau complet, et je ne peux résoudre mon jeu de résultats qu'une seule fois, pas en utilisant un émetteur ou quelque chose.
Je pense que quand j'ai écrit ce que je voulais 'resolve' pour permettre les types de retour du générateur ou un autre cours d'eau. La réponse HTTP ne sera pas envoyée tant que le générateur/flux n'aura pas été épuisé/fermé. Je vais vérifier les liens que vous avez publiés. Les réponses en streaming seraient encore plus fraîches, mais probablement plus difficiles à travailler. – mpen
Si vous pouvez attendre avec la réponse jusqu'à ce que toutes les données soient collectées, continuez simplement à renvoyer les promesses, et collectez uniquement les valeurs et renvoyez un tableau lorsque vous atteignez la fin du flux. –