Graphql-如何执行where子句
我是graphql新手,正在为一个查询而挣扎。 我想通过用户的电子邮件地址返回用户 我有一个类型定义的调用V1User,它有以下字段 身份证件 电子邮件, 密码, 角色 此查询中需要更改哪些内容才能基于电子邮件返回用户Graphql-如何执行where子句,graphql,graphql-js,Graphql,Graphql Js,我是graphql新手,正在为一个查询而挣扎。 我想通过用户的电子邮件地址返回用户 我有一个类型定义的调用V1User,它有以下字段 身份证件 电子邮件, 密码, 角色 此查询中需要更改哪些内容才能基于电子邮件返回用户 query GetAllV1User { viewer { allV1Users{ edges { node { id email role crea
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
}
您可以通过使用where子句和比较运算符来执行此操作
要执行此操作,您必须修改查询以获得一些参数。然后在解析器中发送请求的参数。刚刚更新的问题有错误,我正在获取。您可以为此查询提供架构代码吗?我正在使用scaphold.io创建架构-我可以将您添加到我的帐户中查看它?我从未使用过scaphold,但我相信您可以查看您的模式代码,因此可以将其发布到这里。无论如何,我的第一个猜测是,您需要更新模式中的
getV1UserQuery
query“不要试图模仿SQL”-SQL使用英语,具有熟悉的语法和句子结构(对于那些能够读/写英语的人),所以您不妨这样说“这样做会让你的团队更难摸索和合作,而不是更简单的方式“简洁和简洁是有价值的,只要它们不会消除意义或使听众难以理解。我已经用GraphQL玩了大约一周的入门游戏,每次都有一些不直观的、没有文档记录的、故意含糊不清的或只是从规范中省略的东西。