2017-05-16 67 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。我不会像指针那样格式化它。

此外,当你保存一个用户时,它会被触发,因此无论如何它都不会做你想要的。