2017-05-16 6 views
1

私のサインアップロジックを実装したafterSaveに問題があります。 私がしなければならないことは、ユーザーが登録をしたときにウォレットクラスにトランザクションを追加して、クレジットを与えることです。だから、私は、クラウドコード機能を持っている:解析クラウドコードafterSaveがエラー107を返すPOSTできない

// Add welcome bonus on signup 
 
Parse.Cloud.afterSave(Parse.User, (request) => { 
 
// commit transaction only on signup completed with phone number 
 
    if (request.object.get('username')) { 
 
    const wallet = new Parse.Object('Wallet') 
 

 
    wallet.set('value', 100) 
 
    wallet.set('action', '+') 
 
    wallet.set('description', 'welcome bonus') 
 
    wallet.set('user', { 
 
     __type: 'Pointer', 
 
     className: '_User', 
 
     objectId: request.object.id 
 
    }) 
 

 

 
    wallet.save(null,{useMasterKey: true}).then(
 
     (result) => console.log('objectId',result.id), 
 
     (error) => console.log('code:',error.code,'message:',error.message) 
 
    ) 
 
    } 
 
})

Parse.Cloud.useMasterKeyので、()私はまだ方法を保存するにuseMasterKeyオプションを使用する方法の解析ドキュメントをfollwed、しかし、私廃止されました

info: afterSave triggered for _User for user undefined: 
 
    Input: {...} className=_User, triggerType=afterSave, user=undefined 
 
code: 107 message: Received an error with invalid JSON from Parse: Cannot POST /classes/Wallet

そしてTHI:このエラーを得ましたsはウォレットテーブルです:


|値:数値|アクション:文字列|説明:文字列|ユーザー:ポインタ< _ユーザー> |


そして、私は、ローカルホスト上で働いているデフォルトの列createdAt、updatedAt、OBJECTIDとACL

何が起こっているかについてのアイデアはありますか?

+0

wallet.save()の中にパラメータを入れずに使うだけですか?それでも問題が解決しない場合は、コードの先頭に{useMasterKey:true}を追加してみてください。 – Lyon

+0

値が整数型で、アクション列が文字列型であることを確認してください。おそらくあなたは既にいくつかのオブジェクトを保存していて、それらに異なるタイプを渡しているかもしれません。 –

+0

ウォレットテーブルを表示できますか? –

答えて

0

これは、ユーザーの設定方法に問題があると思います。フィールドがユーザオブジェクトへのポインタフィールドに設定されている場合は、wallet.set('user', request.object);の設定が必要です。リクエストの残りの部分は問題なく表示されるため、自分のセットのJSONフォーマットが好きではないと私の勇気が伝えます。私。ダッシュボードにポインタを設定すると、オブジェクトIDを入力するだけです。私はポインタのようにそれをフォーマットしません。

また、これはユーザーを保存するたびにトリガーされるため、この問題を超えて必要な操作は行われません。

関連する問題