查询

GraphQL API中的数据查询,有以下5个条件参数,可根据需求一起使用。

  • filters: text or array
  • fields: array
  • top: number
  • skip: number
  • sort: text

如图所示:

leads(filters:[["status", "=", "Qualified"]], top:1, sort:"name desc")

当在 steedos 中访问 GraphQL API 时,只能看到有权查看的数据,详情见GraphQL 简介

过滤器 Filters#

您可以在对象名称后添加查询过滤器,过滤器表达式可以是Steedos过滤器的数组,例如[["status", "=", "Qualified"]],也可以是文本的标准OData过滤字符串,例如"status eq 'Qualified'"

示例如下:

query{
leads(filters:[["status", "=", "Qualified"]]){
name,
title,
status
}
}

query{
leads(filters:"status eq 'Qualified'"){
name,
title,
status
}
}

字段结构#

在GraphQL查询中,需在对象名称和括号之后定义字段结构,且可以扩展字段以查询相关字段值。

示例如下:

查询所有leads记录及其扩展字段的信息:

query{
leads{
name,
title,
status,
converted_account {
name,
rating
},
converted_contact {
name,
account{
name
}
},
converted
}
}

结果如下:

{
"data": {
"leads": [
{
"name": "Lead A",
"title": "GM",
"status": "Qualified",
"converted_account": {
"name": "Account B",
"rating": "Hot"
},
"converted_contact": {
"name": "Contact M",
"account": {
"name": "Account N"
}
},
"converted": true
},
{
"name": "Lead B",
"title": "purchasing manager",
"status": "New",
"converted_account": null,
"converted_contact": null,
"converted": null
}
]
}
}

后缀 Suffix_label#

如果GraqhQL脚本具有一些返回日期,日期时间,布尔值,选择等的字段,并且您想直接向客户显示它们,则需要在字段名称后添加后缀__label以表明您要格式化该字段值,否则它将直接返回存储在数据库中的字段的内容。

Date/DateTime#

例如,created字段指示创建时间,它将返回非语义值(例如)1608621469293,但created__label将返回格式化后的格式2020-12-22 15:17(具有良好的阅读体验结果)。

如果created字段是一个空值,则它将返回null,而created__label则返回一个空字符串""

Boolean#

例如,converted字段指是否为转换后的记录,它将返回诸如truefalse的字符,但是converted__label将会返回具有良好阅读体验的结果,如"Yes""No"

如果converted字段为空值,则它将返回null,而converted__label则返回一个字符串"No"

Select#

例如,salutation字段表示某人是“男性”或“女性”,它可能会返回诸如10的字符,但是salutation__label则返回具有良好阅读体验的结果,例如"Male""Female"

如果salutation字段是一个空值,则它将返回null,而salutation__label则返回一个空字符串""

示例:

查询所有leads的记录,其中包含一些__label后缀字段:

query{
leads{
name,
title,
converted,
converted__label,
created,
created__label,
salutation,
salutation__label
}
}

结果如下:

{
"data": {
"leads": [
{
"name": "Lead A",
"title": "GM",
"converted": true,
"converted__label": "Yes",
"created": "1597979950012",
"created__label": "2020-08-21 11:19",
"salutation": "1",
"salutation__label": "Male"
},
{
"name": "Lead B",
"title": "purchasing manager",
"converted": false,
"converted__label": "No",
"created": "1597988499634",
"created__label": "2020-08-21 13:41",
"salutation": "0",
"salutation__label": "Female"
},
{
"name": "Lead C",
"title": "CMO",
"converted": null,
"converted__label": "No",
"created": null,
"created__label": "",
"salutation": null,
"salutation__label": ""
}
]
}
}
提示

如果您使用GraphQL API来获取数据并将其显示在Steedos页面中,则不应在字段名称后添加后缀__label,这是因为Steedos页面会自动将其格式化。

仅当您想直接向客户显示字段值时,才需要在字段名称后添加后缀__label

前缀 Prefix related__#

如果希望在GraphQL API接口返回的列表中,每个记录都包含关联的子对象记录信息,则可以将related__用作前缀来拼接关联的子对象的名称,以实现目标。

什么是子对象?这意味着您有两个通过Master Detail关系字段关联的对象,一个是主对象,另一个是明细对象,而子对象正是明细对象。

示例:

查询所有leads记录,并带有一些related__前缀字段,以获取每个记录的子对象记录:

query{
leads{
name,
title,
related__tasks{
name,
assignees{
name
},
due_date,
due_date__label
}
}
}

结果如下:

{
"data": {
"leads": [
{
"name": "Lead A",
"title": "GM",
"related__tasks": [
{
"name": "Task 1",
"assignees": [
{
"name": "Litant"
}
],
"due_date": "1611964800000",
"due_date__label": "2021-01-30"
}
]
},
{
"name": "Lead B",
"title": "purchasing manager",
"related__tasks": [
{
"name": "Task 2",
"assignees": [
{
"name": "John"
}
],
"due_date": "1611964800000",
"due_date__label": "2021-01-30"
}
]
}
]
}
}
提示

上面示例中的字段名称related__tasks基于一个名为'tasks'的对象,该对象具有与Master Object Leads相关联的master-detail字段。

定位 Top and Skip#

您可以定义一个skip要跳过多少条记录,以及一个单词要返回多少条记录top

如下查询将仅返回第二条记录:

query{
leads(fields:["name"], top:1, skip:1){
name,
title
}
}

排序 Sort#

您可以定义如何用sort对结果进行排序。

关键字desc表示降序,关键字asc表示升序。

示例:

按字段name降序排序

query{
leads(fields:["name"], sort:"name desc"){
name,
title
}
}

字段 Fields#

您可以在对象名称之后添加查询字段,该字段表示查询对象上的字段。

默认忽略此属性,因为您必须在对象名称和括号之后定义字段结构信息,因此建议忽略此属性。

示例:

query{
leads(fields:["name"]){
name,
title
}
}

结果如下:

{
"data": {
"leads": [
{
"name": "T1",
"title": null
},
{
"name": "T2",
"title": null
}
]
}
}
提示

如您所见,如果字段结构中有某些字段未在fields属性中定义,则这些遗漏的字段将被忽略,并返回空值。

华炎魔方

华炎魔方基于商业智能和模型驱动,即使是不懂编程的业务人员,也能轻松便捷地创建智能化、移动化的企业应用。

© 2020 华炎软件. 保留所有权利.

开发人员微信群
商务咨询
微信公众号