2014-09-07 4 views
0

내가 구문 분석 API에 새로 온 사람하고 다음을 수행하는 방법을 알아 내려고 노력하고 있어요 일단 특정 값을 저장 :parse.com

내 앱 스토어 문자열 ("foo는", "바", 등) . "foo"는 문자열을 추가하려고 시도한 횟수와 함께 사용자가 추가하려고하는 횟수와 상관없이 한 번 존재해야합니다.

name: "foo" 
count: 4 

("foo는"의 이름을 가진 두 개 이상의 개체가 전혀 없습니다)

: 4 명의 사용자가 문자열을 추가하려고하면 따라서 "foo는"나는처럼 보이도록 관련 PFObject 싶습니다

"foo"에 대한 쿼리를 검색하여 검색 한 다음 여러 사용자가 "foo"를 동시에 업데이트하려고하면 경쟁 조건이 존재할 것이라고 생각합니다.

Parse API를 통해이를 달성하는 올바른 방법은 무엇입니까 (중요한 경우 iOS를 사용하고 있습니다).

+0

음 ... 정확히 내 질문에 투표가 내려 졌나요? 이 동작에 CloudCode를 사용해야한다는 것은 분명하지 않았습니다. – RobertJoseph

답변

1

구문 분석 코드 beforeSave. 당신을하는 데 도움이 incrementKey 방법으로

Parse.Cloud.beforeSave("MyObject", function(request, response) { 
    var newObject = request.object; 
    if(!newObject.existed()) { 
    var query = new Parse.Query("MyObject"); 
    var name = newObject.get("name"); 
    query.equalTo("name", name); 
    query.first().then(function(existing){ 
     if(existing){ 
     existing.increment("count"); 
     return existing.save().then(function(){ 
      response.error(name + " already exists"); 
     }); 
     } 
     else { 
     response.success(); 
     } 
    }); 
    } 
    else { 
    response.success(); 
    } 
}); 
1

구문 분석을 제공합니다 : https://parse.com/docs/cloud_code_guide#functions-modifysave

다른 이름으로 저장이 발생하기 전에 행의 존재를 확인하고, 업데이트,이 같은 response.error()

뭔가를 반환 여러 사용자가 카운터를 업데이트하려고 할 때 문제가 발생하지 않습니다. 필요한 경우 주어진 금액만큼 감소 또는 증가시킬 수도 있습니다. 카운터라고 부릅니다. 그러나 이는 경쟁 조건 문제 만 해결합니다.

자세한 내용은 https://www.parse.com/docs/ios_guide#objects-updating/iOS에서 확인할 수 있습니다.

+0

질문을 다시 읽으십시오. incrementKey : 동일한 이름의 여러 객체가 저장되는 것을 방지하지 않습니다. @ ccswaden의 대답은이 문제를 완전히 해결합니다. – RobertJoseph

+1

당신 말이 맞아요, 이것은 경쟁 조건 문제 만 해결할뿐입니다 ... 나는 ccwasden의 대답을 살펴볼 것입니다. – dadederk

+0

답을 편집하면 나는 downvote를 제거 할 것입니다. – RobertJoseph