
# 按条件查询对象数据 - QueryData
#### 功能介绍
按条件查询对象数据。
#### URI
POST *华为云Astro轻应用域名* /u-route/baas/data/v1.0/query/*{objectName}* ?*base=X\&fields=f1,f2*
表1路径参数 
| 参数         | 是否必选 | 参数类型   | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
|:---|:---|:---|:---|
| objectName | 是    | String | **参数解释**： 数据对象的名称，请参考[登录应用设计器](https://support.huaweicloud.com/api-astrozero/astrozero_api_0094.html)中操作，进入应用设计器，在"数据 \> 对象"列表中查看。 **约束限制**： 不涉及。 **取值范围**： 1\~80个字符。 **默认取值**： 不涉及。                                                                                                                                                                                                                                                                                                                                |
| base       | 否    | String | **参数解释**： 查询参数，用于区分objectName传入数据样式。 **约束限制**： 不涉及。 **取值范围**： 支持如下选项： - I：对应对象的ID。  - N：传入的对象名称。   **默认取值**： 不涉及。                                                                                                                                                                                               |
| fields     | 否    | Array  | **参数解释**： 对象显示的字段（配置为字段的唯一标识，获取方法如下），多个字段之间用逗号分隔。如果该字段不为空，则仅返回显示的字段和必要信息（如数据记录拥有者信息和id）；为空则返回整个记录数据。 1. 参考[登录应用设计器](https://support.huaweicloud.com/api-astrozero/astrozero_api_0094.html)中操作，进入应用设计器。  2. 在"数据 \> 对象"列表中，将鼠标放在对象上，单击![](https://support.huaweicloud.com/api-astrozero/zh-cn_image_0000002124336921.png)，选择"详情"。  3. 在对象详情页面的"字段"页签中，查看字段的唯一标识。   **约束限制**： 不涉及。 |
   
#### 请求参数
表2请求参数 
| 参数        | 是否必选 | 参数类型   | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
|:---|:---|:---|:---|
| condition | 否    | Object | **参数解释**： 表示查询的条件，包含以下元素，若为空则表示查询所有对象数据。 - conjunction：表示需要满足的条件个数。 - AND：表示条件都要满足。  - OR：表示至少要满足一个条件。    - conditions：筛选条件的数组。如果参数为空，代表查询所有对象数据，若不为空，其中的每一个元素对象都包含如下三个字段。 - field：字段名称。  - operator：操作符。例如，"eq"表示等于、"ne"表示不等于、"gt"表示大于、"lt"表示小于、"ge"表示大于等于、"le"表示小于等于。  - value：对比值。    - relation：数组中包含parents（向上查询）和children（向下查询）两个元素，两者分别对应相应的数组。 其中，parents包含condition数组和relatedField（关联字段名称）。children包含condition数组和relationName（关联字段名称）。    **约束限制**： 不涉及。 |
| relation  | 否    | Object | **参数解释**： 关联查询，包含parents（向上查询）和children（向下查询）两个元素，两者分别对应相应的数组。 其中，parents包含condition数组和relatedField（关联字段名称）。children包含condition数组和relationName（关联字段名称）。 condition数组包含conjunction、conditions和relation，参数解释同condition。 ``` { //向上查询 parents: [  //第一级父对象 { relatedField: "CarHolder__CST",  //当前对象的字段(Lookup/MasterDetail类型),据此确定父对象 options: { fields: ["id", "name", "Age__CST"] //父对象的待查字段 }, parents: [ //(可选)第二级父对象 { relatedField: "cust__CST", //父对象的字段(Lookup/MasterDetail类型),据此确定祖父对象 options: { fields: ["id", "name", "Email__CST"] //祖父对象的待查字段 } } ] } ], //向下查询 childs: [   //第一级子对象 { relationName: "Contacts", //子对象关系名(子对象定义Lookup/MasterDetail时指定),据此确定子对象 options: { fields: ["id", "name", "Age__CST", "cust__CST"] //子对象的待查字段 }, childs: [  //(可选)第二级子对象 { relationName: "ContactCars", //孙子对象关系名 options: { fields: ["id", "name", "Price__CST", "CarHolder__CST"]  //孙子对象待查字段 } } ] } ] } ``` **约束限制**： 不涉及。                                                                                                                                                                                                                                                           |
| options   | 否    | Object | **参数解释**： 附加选项，对查询返回的结果进行一些操作。 - orderby：按指定字段的值排序，取值为asc（升序）和desc（降序） ``` options: { orderby: [ { field: "name", order: db.Order.desc } ], } ```   - groupby：按照指定字段进行分组 ``` options: { groupby: [ { field: "name", } ], } ```   - distinct：去重 ``` options: { distinct: true, } ```   - 限制查询返回的记录数：通过skip值指定从第多少条开始，limit指定总共返回多少条记录 ``` { options: { skip: 100, limit: 100 } } ```    **约束限制**： 不涉及。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
   
#### 响应参数
表3响应参数 
| 参数      | 参数类型   | 描述                                                                                                                                                                                                                                                  |
|:---|:---|:---|
| resCode | String | **参数解释**： 返回码。 **取值范围**： 如果返回"0"代表请求成功，其他错误码说明请参考[错误码（数据面）](https://support.huaweicloud.com/api-astrozero/astrozero_api_0082.html)。 |
| resMsg  | String | **参数解释**： 返回消息。 **取值范围**： 成功返回"成功"，其他情况会返回具体的错误信息。                                                                                    |
| result  | Array  | **参数解释**： 查询返回的对象数据。                                                                                                                                                                                           |
| count   | number | **参数解释**： 对象中满足条件的总记录数。 **取值范围**： 不涉及。                                                                                                  |
   
#### 请求示例
查询"TestProject__testForObject1__CST"对象中，name值为"zhang"的记录数，且限制只返回3条，总记录数为5条，返回的记录按"TestProject__length__CST"字段降序排列，查询参数base为N表示按对象名称进行查询。
```
POST https://华为云Astro轻应用域名/u-route/baas/data/v1.0/query/TestProject__testForObject1__CST?base=N
  
 {"condition": {
        "conjunction": "AND",
        "conditions": [
            {
                "field": "name",
                "operator": "eq",
                "value": "zhang"
            }
        ]
    },
    "options": {
        "orderby": [
            {
                "field": "TestProject__length__CST",
                "order": "desc"
            }
        ],
        "limit": 3
    }
}
```
#### 响应示例
```
{
    "resCode": "0",
    "resMsg": "成功",
    "result": [
        {
            "TestProject__age__CST": null,
            "TestProject__length__CST": "888",
            "TestProject__name__CST": null,
            "createdBy": "10gd000000SDzgxNSckK",
            "createdBy.__objectType": "User",
            "createdBy.name": "test0xx",
            "createdDate": "2020-05-29 12:50:59",
            "currencyIsoCode": "",
            "id": "cglE000000aMGHkvmhmb",
            "installedPackage": null,
            "lastModifiedBy": "10gd000000SDzgxNSckK",
            "lastModifiedBy.__objectType": "User",
            "lastModifiedBy.name": "test0xx",
            "lastModifiedDate": "2020-05-29 12:50:59",
            "name": "zhang",
            "owner": "10gd000000SDzgxNSckK",
            "owner.__objectType": "User",
            "owner.name": "test0xx"
        },
        {
            "TestProject__age__CST": null,
            "TestProject__length__CST": "456",
            "TestProject__name__CST": null,
            "createdBy": "10gd000000SDzgxNSckK",
            "createdBy.__objectType": "User",
            "createdBy.name": "test0xx",
            "createdDate": "2020-05-29 12:50:59",
            "currencyIsoCode": "",
            "id": "cglE000000aMGHkvmhma",
            "installedPackage": null,
            "lastModifiedBy": "10gd000000SDzgxNSckK",
            "lastModifiedBy.__objectType": "User",
            "lastModifiedBy.name": "test0xx",
            "lastModifiedDate": "2020-05-29 12:50:59",
            "name": "zhang",
            "owner": "10gd000000SDzgxNSckK",
            "owner.__objectType": "User",
            "owner.name": "test0xx"
        },
        {
            "TestProject__age__CST": null,
            "TestProject__length__CST": "17",
            "TestProject__name__CST": null,
            "createdBy": "10gd000000SDzgxNSckK",
            "createdBy.__objectType": "User",
            "createdBy.name": "test0xx",
            "createdDate": "2020-05-29 12:43:11",
            "currencyIsoCode": "",
            "id": "cglE000000aMFjB9ipAu",
            "installedPackage": null,
            "lastModifiedBy": "10gd000000SDzgxNSckK",
            "lastModifiedBy.__objectType": "User",
            "lastModifiedBy.name": "test0xx",
            "lastModifiedDate": "2020-05-29 12:43:11",
            "name": "zhang",
            "owner": "10gd000000SDzgxNSckK",
            "owner.__objectType": "User",
            "owner.name": "test0xx"
        }
    ],
    "count": 5
}
```
#### 状态码
状态码请参见[状态码](https://support.huaweicloud.com/api-astrozero/astrozero_api_0081.html)。
#### 错误码
错误码请参见[错误码（数据面）](https://support.huaweicloud.com/api-astrozero/astrozero_api_0082.html)。
