Je suis nouveau sur graphql et j'ai du mal avec une requête. Je souhaite renvoyer un utilisateur par son adresse e-mail
J'ai un type défini d'appel V1User et il a les champs suivants id, email, mot de passe, rôle
Que faut-il changer dans cette requête pour renvoyer un utilisateur sur la base d'un e-mail?
query GetAllV1User {
viewer {
allV1Users{
edges {
node {
id
email
role
createdAt
modifiedAt
}
}
}
}
}
J'ai essayé cette requête
query getV1UserQuery($email: String!) {
getV1User(email: $email) {
id
email
}
}
Avec ces params
{"email": "[email protected]"}
Mais obtenez les erreurs suivantes
{
"errors": [
{
"message": "Unknown argument \"email\" on field \"getV1User\" of type \"Query\".",
"locations": [
{
"line": 2,
"column": 13
}
],
"name": "GraphQLError"
},
{
"message": "Field \"getV1User\" argument \"id\" of type \"ID!\" is required but not provided.",
"locations": [
{
"line": 2,
"column": 3
}
],
"name": "GraphQLError"
}
]
}
Mon schéma est le suivant
Name Type Constraints
id ID NonNull Unique
modifiedAt DateTime NonNull
createdAt DateTime NonNull
role String NonNull
password String NonNull
email String NonNull Unique Indexed
Merci
Salut
Cette requête a résolu mon problème
query getUserForEmailAddressAndPassword($where: V1UserWhereArgs) {
viewer {
allV1Users(where: $where) {
edges {
node {
email
id
createdAt
password
modifiedAt
role
}
}
}
}
}
Avec ces variables de requête
{"where": {"email": {"eq" : "[email protected]"}, "password": {"eq":"te2st"}}}
Je ne recommanderais pas d'utiliser la chaîne "où" dans votre clause de filtrage. N'essayez pas d'émuler SQL. Qu'essayez-vous de filtrer à l'aide de la clause where. S'il s'agit d'une adresse e-mail, la requête de votre schéma doit contenir l'utilisateur comme champ et l'e-mail comme paramètre de ce champ. Le premier exemple que vous avez envoyé est donc la bonne façon de le faire. Évitez également de déclarer des requêtes à l'aide de verbes tels que getUsers ou getUser. Le schéma doit simplement déclarer la requête en utilisant des noms
Query
{
Users(email:String):[User!]
}
type User
{
id
email
createdAt
otherStuff
}