我是graphql的新手,我正在努力解决一个问题。 我想通过他们的电子邮件地址返回用户
我有一个类型定义的调用V1User,它有以下字段 ID, 电子邮件, 密码, 作用
此查询需要更改哪些内容才能根据电子邮件返回用户?
query GetAllV1User {
viewer {
allV1Users{
edges {
node {
id
email
role
createdAt
modifiedAt
}
}
}
}
}
我试过了这个查询
query getV1UserQuery($email: String!) {
getV1User(email: $email) {
id
email
}
}
使用这些参数
{"email": "test@test.com"}
但是得到以下错误
{
"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" : "test@test.com"}, "password": {"eq":"te2st"}}}
答案 0 :(得分:0)
我不建议在您的过滤器子句中使用字符串“ where”。不要尝试模仿SQL。您正在尝试使用where子句进行过滤。如果这是电子邮件地址,则架构中的查询应包含user作为字段,而email作为该字段的参数。 因此,您发送的第一个示例是正确的方法。 另外,避免使用动词(如getUsers或getUser)声明查询。模式应仅使用名词声明查询
Query
{
Users(email:String):[User!]
}
type User
{
id
email
createdAt
otherStuff
}
答案 1 :(得分:0)