【问题标题】:Custom graphql query自定义 graphql 查询
【发布时间】:2020-07-04 04:43:19
【问题描述】:

我有两个 graphql 查询,它们返回 field1、field2 或 field1 和 field2。我还有一个布尔标志 field1 和 field2。你能帮我写一个生成三个 qraphql 查询之一的函数吗:

gql
    query  {
        employee {
            name
        }
    };


gql
    query  {
        employee {
            surname
        }
    };


gql
    query  {
        employee {
            name
            surname
        }
    }


function Form () {
...
    const { data } = useQuery(
        GET_NAME // query 
    );

    const onClick = () => {

    ....
    return textInput.current!.value=data.me.name;

将执行查询(可能由useQuery)并返回可能的字符串之一:

name
surname
name + surname

例如:

如果我检查函数将生成并执行查询的名称

query  {
    employee {
        name
    }
};

并将返回值 - 约翰

如果我检查姓氏,该函数将生成并执行查询

query  {
    employee {
        surname
    }
};

并将返回值 - 康纳

如果我检查姓名和姓氏

 query  {
        employee {
            name
            surname
        }
    };

并将返回约翰·康纳。

它是否像 SQL 查询一样工作?

详细说明: 假设我在服务器 {name: John, surname: Connor} 上只有一个对象,没有 id 和其他字段。当我调用 onClick 函数时,客户端应用程序只需要生成并执行一个查询。你能帮忙吗?

例如,如果我使用 SQL DB,我可以连接字符串查询 常量 q = select ${field} from employee

其中的字段可以是“name”、“surname”或“name, surname”并生成查询 “从员工中选择姓名” “从员工中选择姓氏” "从员工中选择姓名,姓氏"

此查询将返回“John”、“Connor”或“John Connor”。 graphql 是否可以通过串联或插值的方式生成查询?

【问题讨论】:

  • 你能分享你的实际查询和一些代码吗?
  • 我还是不明白你想要得到的结果!如果其中一个为 null 或两者都已定义,您想获取名称或用户名吗?
  • @Nux 添加示例
  • 所以你想要的是根据某些情况动态传递字段?
  • @Nux 我添加了解释,请帮助我。 graphQL Querry 是 String 类型的变量吗?

标签: javascript graphql


【解决方案1】:

graphql 是否可以通过连接生成查询或 插值? 简单的答案是否定的。

但如果与其他工具结合使用,例如 graphql-mongodb-projection for mongoDb using mongoose 和 graphql-sequelize using Sequalize.js,则可以做到这一点。

根据您使用的数据库和服务器,您将需要一些类似上面提到的工具来将必填字段传递给 ORM

【讨论】:

  • 感谢您的回复。我添加了解释。
猜你喜欢
  • 2017-06-16
  • 2020-07-09
  • 2021-06-14
  • 2021-12-16
  • 2019-05-17
  • 2020-05-28
  • 2019-06-12
  • 2019-06-12
  • 1970-01-01
相关资源
最近更新 更多