2017-05-16 1 views
1

J'ai des problèmes avec afterSave implémentant ma logique d'inscription. Ce que je dois faire est d'ajouter une transaction dans la classe Wallet lorsque l'utilisateur fait l'enregistrement, en lui donnant quelques crédits. J'ai donc ma fonction de code nuage:l'analyse du code de cloud afterSave renvoie l'erreur 107 impossible 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) 
 
    ) 
 
    } 
 
})

Depuis Parse.Cloud.useMasterKey() est dépréciée Je follwed la doc Parse sur la façon d'utiliser l'option sur useMasterKey méthode de sauvegarde, mais je reste a obtenu cette erreur:

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

Et thi s est ma table portefeuille:


| valeur: Numéro | action: Chaîne | description: String | utilisateur: Pointer < _User> |


Et les colonnes par défaut createdAt, updatedAt, objectId et ACL

Je travaille sur localhost.

Des idées sur ce qui se passe?

+0

Vous ne pouvez pas utiliser wallet.save() sans les paramètres à l'intérieur? Si cela ne fonctionne pas, essayez d'ajouter {useMasterKey: true} en haut de votre code. – Lyon

+0

Pouvez-vous vous assurer que la valeur est un type entier et que la colonne action est un type de chaîne? Peut-être avez-vous déjà sauvegardé un objet avant de passer différents types. –

+0

Pouvez-vous me montrer la table Wallet? –

Répondre

0

Je parie que c'est un problème avec la façon dont vous définissez l'utilisateur. Si le champ est défini comme champ de pointage sur un objet utilisateur, tout ce que vous avez à faire est wallet.set('user', request.object); Le reste de la requête semble correct, donc mon instinct me dit qu'il n'aime pas ce format JSON pour votre ensemble. C'est à dire. quand je place un pointeur sur le tableau de bord, je tape juste l'identifiant de l'objet. Je ne le formate pas comme un pointeur.

De plus, cela va être déclenché à chaque fois que vous enregistrez un utilisateur, donc il ne va pas faire ce que vous voulez au-delà de ce problème.