Une bibliothèque légère et simple permettant de gérer un contexte local asynchrone pour vos projets GraphQL. Utilisez cette librairie pour stocker et partager des informations tout au long du cycle de vie de vos requêtes, sans collisions entre les différents appels.
Pour installer la librairie, utilisez la commande suivante :
npm install git@github.com:aidalinfo/lib-graphql-store.git- Stockage contextuel asynchrone grâce à
AsyncLocalStorage. - Partage sécurisé d'informations entre les résolveurs GraphQL.
- Interface simple avec des méthodes pour définir et récupérer des données.
Importez et utilisez la bibliothèque dans votre projet. Voici un exemple basique :
import store from 'lib-graphql-store';
// Définir une valeur dans le contexte
store.set('userId', 123);
// Récupérer une valeur depuis le contexte
const userId = Store.get('userId');
console.log(userId); // 123Ajoutez lib-graphql-store à votre serveur GraphQL pour gérer les données dans le contexte de vos requêtes.
import { ApolloServer, gql } from 'apollo-server';
import store from 'lib-graphql-store';
// Exemple de schéma GraphQL
const typeDefs = gql\`
type Query {
user: String
}
\`;
// Exemple de résolveur
const resolvers = {
Query: {
user: () => {
// Récupérer l'utilisateur stocké dans le contexte
const userId = store.get('userId');
return \`Utilisateur avec l'ID \${userId}\`;
},
},
};
// Middleware pour initialiser le contexte de chaque requête
const context = ({ req }) => {
// Créer un contexte local pour chaque requête
store.ensureContext();
store.set('userId', req.headers['user-id'] || 'inconnu');
return {};
};
// Créer et démarrer le serveur Apollo
const server = new ApolloServer({ typeDefs, resolvers, context });
server.listen().then(({ url }) => {
console.log(\`🚀 Serveur prêt à l'adresse \${url}\`);
});Vous pouvez utiliser un client GraphQL comme Apollo Client ou Postman pour tester votre serveur :
query {
user
}Avec un en-tête personnalisé user-id, par exemple :
{
"user-id": "456"
}La réponse sera :
{
"data": {
"user": "Utilisateur avec l'ID 456"
}
}Définit une valeur associée à une clé dans le contexte asynchrone.
Récupère une valeur associée à une clé ou retourne tout le contexte si aucune clé n'est fournie.
Assure qu'un contexte asynchrone est présent pour stocker les données.