2017-05-16 68 views
1

我遇到afterSave實現我的註冊邏輯問題。 我必須做的是在用戶進行註冊時在Wallet類中添加一個交易,並給他一些信用。所以,我有我的雲碼功能:解析雲代碼afterSave返回錯誤107不能POST 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()已被棄用我follwed關於如何使用上保存方法useMasterKey選項解析文檔,但我仍然得到這個錯誤:

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是我的錢包表:


|值:Number | action:String |描述:String |用戶:指針< _User> |


和默認列createdAt,updatedAt,OBJECTID和ACL

我工作在本地主機上。

關於發生了什麼事情的任何想法?

+0

不能使用wallet.save()而不使用裏面的參數?如果這不起作用,請嘗試在代碼頂部添加{useMasterKey:true} – Lyon

+0

請確保該值是一個整數類型,而操作列是一個字符串類型?也許你已經保存了一些對象,然後傳遞給它們不同的類型。 –

+0

你能告訴我錢包表嗎? –

回答

0

我敢打賭,這是你設置用戶的方式的問題。如果該字段設置爲用戶對象的指針字段,則您只需設置wallet.set('user', request.object);請求的其餘部分看起來不錯,所以我的直覺告訴我它並不喜歡您的設置使用JSON格式。即當我在儀表板上設置一個指針時,我只需輸入對象ID。我不會像指針那樣格式化它。

此外,當你保存一個用戶時,它會被觸發,因此無論如何它都不會做你想要的。