Graphqlは初めてで、クエリに苦労しています。メールアドレスでユーザーを返したい
V1Userを呼び出すタイプが定義されており、次のフィールドid、email、password、roleがあります
電子メールに基づいてユーザーを返すために、このクエリで何を変更する必要がありますか?
query GetAllV1User {
viewer {
allV1Users{
edges {
node {
id
email
role
createdAt
modifiedAt
}
}
}
}
}
このクエリを試しました
query getV1UserQuery($email: String!) {
getV1User(email: $email) {
id
email
}
}
これらのパラメーターで
{"email": "[email protected]"}
しかし、次のエラーが発生します
{
"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"
}
]
}
私のスキーマは次のとおりです
Name Type Constraints
id ID NonNull Unique
modifiedAt DateTime NonNull
createdAt DateTime NonNull
role String NonNull
password String NonNull
email String NonNull Unique Indexed
ありがとう
こんにちは
このクエリは私の問題を解決しました
query getUserForEmailAddressAndPassword($where: V1UserWhereArgs) {
viewer {
allV1Users(where: $where) {
edges {
node {
email
id
createdAt
password
modifiedAt
role
}
}
}
}
}
これらのクエリ変数とともに
{"where": {"email": {"eq" : "[email protected]"}, "password": {"eq":"te2st"}}}
フィルタ句で文字列「where」を使用することはお勧めしません。 SQLをエミュレートしようとしないでください。 where句を使用してフィルタリングしようとしているものは何ですか。電子メールアドレスの場合、スキーマ内のクエリにはフィールドとしてユーザーを、そのフィールドへのパラメーターとして電子メールを含める必要があります。そのため、最初に送信した例が正しい方法です。また、getUsersやgetUserなどの動詞を使用してクエリを宣言しないでください。スキーマは、名詞を使用してクエリを宣言するだけです
Query
{
Users(email:String):[User!]
}
type User
{
id
email
createdAt
otherStuff
}