如何使用CloudKit Web服务根据参考字段进行查询?

时间:2015-09-24 00:08:36

标签: cloudkit cloudkit-web-services

我有两个看起来像这样的CloudKit数据对象:

父对象:

{
    "records": [
        {
            "recordName": "14102C0A-60F2-4457-AC1C-601BC628BF47-184-000000012D225C57",
            "recordType": "ParentObject",
            "fields": {
                "fsYear": {
                    "value": "2015",
                    "type": "STRING"
                },
                "displayOrder": {
                    "value": 2015221153856287200,
                    "type": "INT64"
                },
                "fjpFSGuidForReference": {
                    "value": "14102C0A-60F2-4457-AC1C-601BC628BF47-184-000000012D225C57",
                    "type": "STRING"
                },
                "fsDateSearch": {
                    "value": "2015221153856287158",
                    "type": "STRING"
                },
            },
            "recordChangeTag": "id4w7ivn",
            "created": {
                "timestamp": 1439149087571,
                "userRecordName": "_0d26968032e31bbc72c213037b6cb35d",
                "deviceID": "A19CD995FDA3093781096AF5D818033A241D65C1BFC3D32EC6C5D6B3B4A9AA6B"
            },
            "modified": {
                "timestamp": 1439149087571,
                "userRecordName": "_0d26968032e31bbc72c213037b6cb35d",
                "deviceID": "A19CD995FDA3093781096AF5D818033A241D65C1BFC3D32EC6C5D6B3B4A9AA6B"
            }
        }
    ],
    "total": 
}

子对象:

{
    "records": [
        {
            "recordName": "2015221153856287168",
            "recordType": "ChildObject",
            "fields": {
                "District": {
                    "value": "002",
                    "type": "STRING"
                },
                "ZipCode": {
                    "value": "12345",
                    "type": "STRING"
                },
                "InspecReference": {
                    "value": {
                        "recordName": "14102C0A-60F2-4457-AC1C-601BC628BF47-184-000000012D225C57",
                        "action": "NONE",
                        "zoneID": {
                            "zoneName": "_defaultZone"
                        }
                    },
                    "type": "REFERENCE"
                },
            },
            "recordChangeTag": "id4w7lew",
            "created": {
                "timestamp": 1439149090856,
                "userRecordName": "_0d26968032e31bbc72c213037b6cb35d",
                "deviceID": "A19CD995FDA3093781096AF5D818033A241D65C1BFC3D32EC6C5D6B3B4A9AA6B"
            },
            "modified": {
                "timestamp": 1439149090856,
                "userRecordName": "_0d26968032e31bbc72c213037b6cb35d",
                "deviceID": "A19CD995FDA3093781096AF5D818033A241D65C1BFC3D32EC6C5D6B3B4A9AA6B"
            }
        }
    ],
    "total": 1
}

我尝试编写查询以直接访问CloudKit Web服务,并根据父对象的引用返回子对象。

我的测试JSON看起来像这样:

{"query":{"recordType":"ChildObject","filterBy":{"fieldName":"InspecReference","fieldValue":{ "value" : "14102C0A-60F2-4457-AC1C-601BC628BF47-184-000000012D225C57", "type" : "string" },"comparator":"EQUALS"}},"zoneID":{"zoneName":"_defaultZone"}}

但是,我从CloudKit收到以下错误:

  

{"&的uuid#34;:" 33db91f3-b768-4a68-9056-216ecc033e9e"" serverErrorCode":" BAD_REQUEST"&# 34;原因":" BadRequestException:   意外的输入"}

我猜测我的查询中的记录字段字典是错误的。但是,文档并不清楚参考对象应该是什么样的。

1 个答案:

答案 0 :(得分:1)

您必须重新创建引用的实际对象。在这种特殊情况下,JSON看起来像这样:

{
    "query": {
        "recordType": "ChildObject",
        "filterBy": {
            "fieldName": "InspecReference",
            "fieldValue": {
                "value": {
                    "recordName": "14102C0A-60F2-4457-AC1C-601BC628BF47-184-000000012D225C57",
                    "action": "NONE"
                },
                "type": "REFERENCE"
            },
            "comparator": "EQUALS"
        }
    },
    "zoneID": {
        "zoneName": "_defaultZone"
    }
}