0
votes

Après la requête graphique: Propriété 'Alors' n'existe pas sur le type 'Void'

J'utilisais des mutations graphql comme ceci et le travail .Chen & .Catch fonctionne parfaitement: xxx pré>

Je fais maintenant quelque chose de similaire ici pour une requête graphql (version de travail plus complète ci-dessous): xxx pré>

mais je continue à obtenir une erreur sur la propriété "alors" n'existe pas sur le type "vide" p> p>

éditer : P>

Sans le .Chen, .Catch, mon code fonctionne correctement. La forme complète est quelque chose comme ceci: p> xxx pré>

Voici comment la requête graphql elle-même ressemble à: p>

Object

__typename: "User"

email: "first@first.com"

firstName: "First"

id: 148

lastName: "User"

phoneNumber: "+49123"


2 commentaires

où est lohasers ?


Question mise à jour @wyck


3 Réponses :


0
votes

Cela dépend de ce qui se passe exactement dans lohasers , mais il est probable que vous ayez oublié une déclaration de retour là-bas.

Si vous modifiez lohausers pour renvoyer la promesse pour le chargement de l'utilisateur, votre code doit commencer à fonctionner bien.


3 commentaires

LOADUSERS est une requête graphql. Je ne pense pas avoir besoin d'une déclaration de retour là-bas, n'est-ce pas? Comme dans le premier exemple, updateaser () est également une mutation graphql et fonctionne correctement. Pourriez-vous voir mes QS mis à jour, puis expliquer ce que vous vouliez dire?


Cette réponse est absolument correcte. Enterré dans l'exemple de OP bien, c'est que loadusers provenait d'une méthode externe, UselazyQuery fourni par APOLLO. La méthode renvoyée ne renvoie pas une promesse.


Alors, comment puis-je accéder au message d'erreur alors? De plus, par exemple, la requête renvoie un objet avec la propriété ID alors comment puis-je accéder à la propriété? En cas de mutations, je ferais simplement data.loaduser.id ou quelque chose et cela fonctionnerait mais pas dans ce cas. Alors, quelle est la solution? @Lmulvey



0
votes

Si vous regardez The Docs Pour UselazyQuery , il ne renvoie pas un prometteur comme usertatation afin qu'ils se comportent différemment.

Au lieu de s'appuyer sur une promesse, vous devez utiliser les deuxièmes paramètres (chargement, données) renvoyés lors de l'appelant UselazyQuery . C'est pourquoi dans votre édition, votre code fonctionne sans le .Chen .


1 commentaires

J'ai essayé d'ajouter {chargement, de données, erreur} mais si je fais console.log ('erreur:', erreur); après la fin de la requête des chargeurs, je suis toujours indéfini. . Même quand il y a une erreur. Quelle est la bonne façon de l'utiliser? Je n'ai pas pu trouver d'exemple pertinent.



2
votes

Comme indiqué dans d'autres réponses, c'est un problème connu - "" La fonction d'exécution de l'USLazyQuery devrait revenir Une promesse # 3499 "

au lieu de xxx

Vous pouvez utiliser inecompleté option xxx < / pré>


7 commentaires

Étant donné que j'utilise des chargeurs de chargeurs de plusieurs fois (chaque fois avec différents paramètres), je ne suis pas sûr que cela serait réalisable.


J'ai essayé d'ajouter {chargement, de données, erreur} mais si je fais console.log ('erreur:', erreur); après la fin de la requête des chargeurs, je suis toujours indéfini. . Même quand il y a une erreur. Quelle est la bonne façon de l'utiliser? Je n'ai pas pu trouver d'exemple pertinent.


Vous pouvez appeler la mutation avec différentes variables à partir de plusieurs endroits - la manipulation des données est généralement la même ... Loading peut être indéfini si DATA est OK


Cela ne répond pas vraiment à ma question. Comment puis-je accéder au message d'erreur alors? De plus, par exemple, la requête renvoie un objet avec la propriété ID alors comment puis-je accéder à la propriété? En cas de mutations, je ferais simplement data.loaduser.id ou quelque chose et cela fonctionnerait mais pas dans ce cas. Alors, quelle est la solution?


Erreur est disponible dans le corps FN Composant (comme vous avez essayé plus tôt) ... ID? vérifier la réponse / console.log it? ... data.id ?


L'erreur vient comme non définie. Et data.Id jette également une erreur non définie n'est pas un objet. Data.Users.nodes renvoie un objet, mais si j'appuie .Id à cela, cela ne fonctionne pas.


S'il s'agit d'une matrice, ITATEZ ITER IT ... NODES [0] .Id ... Tout cela, vous pouvez vérifier - la réponse est un JSON - Vérifiez-le