好问题。
下面是我将如何开始。我假设您已经使用 Products 设置了一个数据库,并且这些 Products 有一个 name 和一个 description。
首先 - 这是你如何获得所有产品(你将把它输入到 GraphQL 游乐场)。:
query {
allProducts {
name
description
}
}
其次 - 这是您获得具有特定名称的产品的方法:
query {
allProducts (where: {name: "Nike Air VaporMax"}){
name
description
}
}
第三 - 这是如何在名称或描述中引入“包含”的方法包含“耐克”。 _i 后缀表示不区分大小写。
query {
allProducts (where: {name_contains_i: "nike"}){
name
description
}
}
第四 - 这是如何引入 OR(注意逗号和容器大括号):
query {
allProducts (where: {
OR: [{description_contains_i:"shoes"}, {name_contains_i:"shoes"}]
}
)
{
name
description
}
}
第五 - 这里是如何引入 AND (同上,注意逗号和大括号):
query {
allProducts (where: {
AND: [{description_contains_i:"shoes"}, {name_contains_i:"shoes"}]
}
)
{
name
description
}
}
第六——这里是如何开始引入变量——我们将把它与 WHERE + OR 一起使用:
query ($varTest: String!) {
allProducts(
where: {
OR: [{ description_contains_i: "shoes" }, { name_contains_i: $varTest }]
}
) {
name
description
}
}
而且!重要!对于上述内容,您需要填写查询变量:
{
"varTest": "Nike"
}
如果您不熟悉放置查询变量的位置,它大致如下所示(查找放置查询变量的第二个窗口。)
第七 - 这是踢球者。您可以选择命名这些查询。模式一致性的破坏最初让我感到厌烦。让我在这里添加一个非常明显的名称,以便您也可以看到它:
query THIS_IS_MY_COOL_QUERY_NAME($varTest: String!) {
allProducts(
where: {
OR: [{ description_contains_i: "shoes" }, { name_contains_i: $varTest }]
}
) {
name
description
}
}
八 - 奖金。你不需要这个,但我想在这里介绍它,这样它以后不会让你失望。提交查询时,您可以为返回的返回对象数组指定自己的名称。不要让这句话让你感到困惑,我会给你返回数组的例子,这样你就清楚了。
这是第八个查询(不要忘记像在第七个示例中那样使用查询变量)。我将直接在查询中添加一个非常明显的名称:
query THIS_IS_MY_COOL_QUERY_NAME($varTest: String!) {
resultsWillBeReturnedAsArrayWithThisName: allProducts(
where: {
OR: [{ description_contains_i: "shoes" }, { name_contains_i: $varTest }]
}
) {
name
description
}
}
上一个查询(第七个)的结果将如下所示:
{
"data": {
"allProducts": [
{
"name": "Air Jordan 1",
"description": "Wow - there are shoes!"
},
{
"name": "Nike Blazer Mid",
"description": "Very nice!"
},
{
"name": "Shoes",
"description": "These are shoes!"
}
]
}
}
但是八个查询的结果看起来像这样(请注意您介绍的名称将如何从 GraphQL 中返回给您)。 :
{
"data": {
"resultsWillBeReturnedAsArrayWithThisName": [
{
"name": "Air Jordan 1",
"description": "Wow - there are shoes!"
},
{
"name": "Nike Blazer Mid",
"description": "Very nice!"
},
{
"name": "Shoes",
"description": "These are shoes!"
}
]
}
}
这应该为您理解 GraphQL 提供了坚实的基础。