2016-10-18 2 views
0

約束のプッシュ通知を送信しようとしています。私は引数を取得した後、まずサーバーからデータを取得しています。これは私のコードです。パーズは約束を伴うプッシュの送信ではない

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

ためvaild接続を見つけることができません。つまり、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は約束を破っているので、promiseチェーンの各部分がデバッグステートメントと同じように動作していることを確認することに集中すれば、確実に進むのに役立ちます。がんばろう。

+0

ありがとう私はそれを試してみます –

+0

よく、それは動作しましたか? –

+0

いいえ、実際には機能しませんでした。私はまだ私のコードで動作していない理由を探しています。 –