2016-10-18 3 views
0

약속과 함께 푸시 알림을 보내려고합니다. 왜냐하면 먼저 args를 얻은 후에 서버에서 데이터를 가져 오는 것입니다. 이것은 내 코드입니다.구문 분석에서 약속을 보내지 않음

var fromUser = request.object.get('fromUser').fetch().then(function(user) { 
    var userName = user.get('username'); 
    userCredits.userName = user.get('username'); 
    //userPromise.resolve(userName); 
    userPromise.resolve(userName); 
}); 
promises = [userPromise, groupPromise]; 
Parse.Promise.when(promises).then(function(result1)  { 
    var query = new Parse.Query(Parse.Installation); 
    query.containedIn('channels', members); 
    console.log("push sending #######"); 
    Parse.Push.send({ 
    where: query, 
    data: { 
     aps: { 
     alert: { 
      "loc-key": type, 
      "loc-args": [userCredits.userName, userCredits.groupName] 
     }, 
     isJSONPush: 'true', 
     badge: 'increment', 
     'sound': 'default', 
     type: type, 
     group: group, 
     message: message, 
     messages: messages, 
     activity: request.object, 
     "mutable-content": 1 
     }, 
    } 
    }, { 
    useMasterKey: true 
    }, { 
    success: function() { 
     console.log('##### PUSH OK'); 
    }, 
    error: function(error) { 
     console.log('##### PUSH ERROR' + error.message); 
    } 
    }); 
    //return response.success(result1); 
}, function(error) { 
    console.log("error + " + error); 
    return response.error(error); 
}); 

그래서 약속 범위 밖에서 사용하면 작동합니다. 하지만 약속 범위에서 사용하려고 할 때 작동하지 않습니다.

또한 오류가 나오는 출력입니다.

구문 분석 - 서버 푸시 어댑터 APNS 여기에 무슨 일이 일어나고 있는지 확인하려면 더 많은 코드를 사용할 수

+0

제안 사항이 있으십니까? –

답변

0

에 대한 유 효 연결을 찾을 수 없습니다. 즉 userPromise의 선언을 사용할 수도 있고 groupPromise

그러나 나는 당신의 약속이 당신이 생각하는대로 작동하지 않는다고 확신합니다.

여기에 전체 코드가 어떻게 생겼는지에 대한 가정이나 두 가지를내어 준 비트를 다시 작성했습니다. 나는 request.object.get('fromUser').fetch()의 결과를 가지고하는 방법을 참고 Parse.Promise.when에 그 권리를 넣어

var userPromise = request.object.get('fromUser').fetch(); 
var groupPromise = groupQueryThatReturnsAPromise; 


// Note that if you put the promises not in an array 
// but sep with commas, you know what's returned.... 
Parse.Promise.when(userPromise, groupPromise).then(function (user, group) { 
    // just to make sure we got here with what we want :) 
    console.log(user, group); 
    var query = new Parse.Query(Parse.Installation); 
    query.containedIn('channels', members); 
    console.log('push sending #######'); 
    return Parse.Push.send({ 
    where: query, 
    data: { 
     aps: { 
     alert: { 
      'loc-key': type, 
      'loc-args': [user.get('username'), group.get('groupName')] 
     }, 
     isJSONPush: 'true', 
     badge: 'increment', 
     sound: 'default', 
     type, // just some fancy object notation if the key and value are the same :). 
     group, 
     message, 
     messages, 
     activity: request.object, 
     'mutable-content': 1, 
     }, 
    }, 
    }, { 
    useMasterKey: true, 
    }); 
}).then(() => response.success) // fancy new style "fat arrow" function declaration 
.then(null, e => response.error(e)); // chain an extra then in case we error out in the when... 

PS를 : 미안 난 여기가 퍼팅하기 전에 유효성을 검사하는 코드를 실행할 수 없습니다, 희망이 도움이되지만 prob는 약속을 무시합니다. 약속 체인의 각 부분이 디버그 명령문으로 생각하는 방식으로 작동하는지 확인하는 데 집중한다면 곧 앞으로 나아갈 수 있도록 도와 줄 것입니다. 행운을 빕니다.

+0

고마워요. 시도해 볼게요. –

+0

잘 했나요? –

+0

아니, 실제로 작동하지 않았다. 나는 아직도 내 코드에서 작동하지 않는 이유를 찾고있다. –