gpt4 book ai didi

graphql - Graphql-如何执行where子句

转载 作者:行者123 更新时间:2023-12-04 01:13:16 28 4
gpt4 key购买 nike

我是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"}}}

最佳答案

我不建议在您的过滤器子句中使用字符串“ where”。不要尝试模仿SQL。您正在尝试使用where子句进行过滤。如果这是电子邮件地址,则架构中的查询应包含user作为字段,而email作为该字段的参数。
因此,您发送的第一个示例是正确的方法。
另外,避免使用诸如getUsers或getUser之类的动词声明查询。模式应仅使用名词声明查询

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

type User
{
id
email
createdAt
otherStuff
}

关于graphql - Graphql-如何执行where子句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48731361/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com