使用iOS Parse SDK
,我可以成功创建新的PFObject A
并将其设置为另一个新PFOBject B
的值:
PFObject * objectA = [PFObject objectWithClassName:@"objectA"];
[objectA setValue:@"Test Text" forKey:@"text"];
PFObject * objectB = [PFObject objectWithClassName:@"objectB"];
[objectB setValue:objectA forKey:@"objectA"];
当我执行[PFObject saveAll:(NSArray*)objects]
时,Parse将为objectId
生成objectA
,并将其设置为objectB
上的键中的指针值。
如何使用REST API (PYTHON)
执行此操作。从文档中可以看出,在将指针作为值传递给我的类objectB
的键时,我必须提供以下内容:
{"__type": "Pointer",
"className": "objectA",
"objectId":objectA.get('objectId')}
但是,当我创建新的objectA
时,objectId
尚未存在。
这是我的python代码:
def generateFakeMessages():
messageFactory = MessageFactory(retrieveUsers())
appKeys = {
"X-Parse-Application-Id": "XXXX",
"X-Parse-REST-API-Key": "XXXX",
"Content-Type": "application/json"}
mList = []
objectA = messageFactory.fakeMessage()
arrayOfObjectBs = messageFactory.fakeRecipients()
mList.append({
"method": "POST",
"path": "/1/classes/testMessageClass",
"body": objectA
})
for objectB in arrayOfObjectBs:
objectB['objectAPointer'] = {
"__type": "Pointer",
"className": "testMessageClass",
"objectId": objectA.get('objectId')
}
mList.append({
"method": "POST",
"path": "/1/classes/recipients",
"body": objectB
})
requests = {"requests":mList}
connection = httplib.HTTPSConnection('api.parse.com', 443)
connection.connect()
connection.request('POST', '/1/batch', json.dumps(requests), appKeys)
result = json.loads(connection.getresponse().read())
print result
答案 0 :(得分:0)
根据this question on the Parse forum,saveAll:
在后台使用batches,如果它确定对象图中有未保存的子项,则批量处理它们,然后使用该结果能够正确地拯救父母。
要自己使用REST API执行此操作,您需要自行完成批处理。批次每批限制为50次创建/更新/删除操作。
如果您有50个objectA
个实例,每个实例都有objectB
引用它,您可以分两批进行。
答案 1 :(得分:0)
这是使用批次的更正代码。而不是为
设置指针表示objectB['message']
我设置了实际的对象。 Parse对上传的依赖性进行了排序。
def generateFakeMessages():
messageFactory = MessageFactory(retrieveUsers())
appKeys = {
"X-Parse-Application-Id": "XXXX",
"X-Parse-REST-API-Key": "XXXX",
"Content-Type": "application/json"}
mList = []
objectA = messageFactory.fakeMessage()
arrayOfObjectBs = messageFactory.fakeRecipients()
mList.append({
"method": "POST",
"path": "/1/classes/testMessageClass",
"body": objectA
})
for objectB in arrayOfObjectBs:
objectB['message'] = fakeMessage
mList.append({
"method": "POST",
"path": "/1/classes/recipients",
"body": objectB
})
requests = {"requests":mList}
connection = httplib.HTTPSConnection('api.parse.com', 443)
connection.connect()
connection.request('POST', '/1/batch', json.dumps(requests), appKeys)
result = json.loads(connection.getresponse().read())
print result