我遇到了afterSave实现我的注册逻辑的问题。 我要做的是在用户进行注册时在Wallet类中添加一个事务,给他一些信用。所以我有我的云代码功能:
// 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()已被弃用,我在Parse文档中介绍了如何在save方法中使用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

这是我的电子钱包表:
|值:数字| action:String | description:String | user:指针< _User> |
默认列createdAt,updatedAt,objectId和ACL
我正在使用localhost。
关于发生了什么的任何想法?
答案 0 :(得分:0)
我敢打赌,这是您设置用户的方式的问题。如果该字段被设置为用户对象的指针字段,那么您需要做的就是设置wallet.set('user', request.object);
请求的其余部分看起来很好,所以我的直觉告诉我它并不喜欢JSON您的设置的格式。即当我在仪表板上设置指针时,我只需输入对象ID。我不像指针那样格式化它。
此外,只要您保存用户,就会触发此操作,因此无论如何都不会按照此问题执行您想要的操作。