사용자를 저장하려고합니다 (일부 데이터를 Facebook에서 가져 와서 일부 열에 추가 함) 아무 것도 사용하지 않음 할 일 등록하는 동안 클라우드에서 구문 분석의 beforeSave
트리거에서 구문 분석 사용자 이름)와,하지만 난 내 iOS 앱에서 다음과 같은 오류를 받고 있어요 :구문 분석 오류 : "사용자 이름을 이전 저장 트리거에서 수정할 수 없음"및 "유효성 검사 실패"
Can't modify username in the before save trigger
그것은 꽤 자기 설명, 맞아? 작은 배경으로 을 입력하지 마십시오.은 어디에서나 사용자 이름을 수정할 수 있으며, iOS 앱에서는 트리거, 클라우드 기능 또는 클라이언트 측 어느 곳에서도 수정할 수 없습니다. 나는 심지어 그것을 액세스하거나 사용하지 않습니다. 사용자는 내 클라우드 코드 추가 필드를 사용하여 성공적으로 만들어집니다. 하지만 가끔은 그냥이 오류를 얻을 :
Validation Failed
그런 다음 내 사용자 개체가 저장하지 않는 것 같습니다. 동일한 오류 테스트 사용자와 함께 두 가지 오류가 무작위로 발생합니다. 심지어 전체 프로젝트에서 "username"이라는 단어를 검색하여 어딘가에을 직접 또는 간접적으로 설정하지 않았는지 확인했습니다. 나는 그것을 어디에도 저장하지 않을 것이다. 이것은 Parse 버그인가요, 아니면 제가 명백한 것을 놓치고 있습니까? 여기에 내 전체 코드는 다음과 같습니다
Parse.Cloud.beforeSave(User, function(request, response) {
var user = request.object;
if(typeof user.get("nickname") == "undefined" || user.get("nickname") == null){
var randomNick = "User " + Math.floor(Math.random() * 1000000);
user.set("nickname", randomNick);
}
if(user.get("facebookId") == undefined){
var token = user.get('authData')['facebook']['access_token'];
Parse.Cloud.httpRequest({
url: 'https://graph.facebook.com/v2.1/me?fields=id,gender,name&access_token=' + token,
success: function(httpResponse) {
var responseData = httpResponse.data;
user.set("facebookId", responseData.id);
user.set("realName", responseData.name);
if(responseData.gender !== undefined){
user.set("gender", responseData.gender);
}
var acl = new Parse.ACL();
acl.setPublicReadAccess(false);
user.setACL(acl);
user.save(null, {
useMasterKey:true,
success: function(){response.success()},
error: function(o,e){response.error("error: " + e)}
});
},
error: function(httpResponse) {
console.error('Request failed with response code ' + httpResponse.status);
}
});
}else{
response.success();
}
});
코드의 여러 단계에서 사용자 이름을 로깅하는 콘솔을 사용해보십시오. 어느 시점에서 변경되는지 확인하십시오. – slicedtoad
적어도 iOS SDK에서는 구문 분석에 대한 사용자 캐싱이 엉망입니다. Def는 콘솔에 사용자 이름을 로깅 할뿐만 아니라 주기적으로 Parse User 객체를 새로 고치는 것을 고려합니다 (개념이 js에 있다고 가정). – cdstamper