web-dev-qa-db-ja.com

Graphql-where句を実行する方法

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"}}}
12

フィルタ句で文字列「where」を使用することはお勧めしません。 SQLをエミュレートしようとしないでください。 where句を使用してフィルタリングしようとしているものは何ですか。電子メールアドレスの場合、スキーマ内のクエリにはフィールドとしてユーザーを、そのフィールドへのパラメーターとして電子メールを含める必要があります。そのため、最初に送信した例が正しい方法です。また、getUsersやgetUserなどの動詞を使用してクエリを宣言しないでください。スキーマは、名詞を使用してクエリを宣言するだけです

Query
{
   Users(email:String):[User!]
}

type User 
{
    id
    email
    createdAt
    otherStuff
}
2
Aaron Dsouza