【发布时间】:2017-05-16 22:42:13
【问题描述】:
我在 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 文档介绍了如何在保存方法中使用 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
这是我的钱包表:
|值:数字 |动作:字符串 |描述:字符串 |用户:指针<_user> |
以及默认列 createdAt、updatedAt、objectId 和 ACL
我正在使用本地主机。
有什么想法吗?
【问题讨论】:
-
你不能在没有参数的情况下使用 wallet.save() 吗?如果这不起作用,请尝试在代码顶部添加 {useMasterKey: true}
-
您能否确定 value 是 Integer 类型而 action 列是 string 类型?也许您之前已经保存了一些对象并传递了不同的类型。
-
你能给我看看 Wallet 表吗?
-
检查了我的列的类型,它们是数字和字符串。
-
{useMatserKey: true} 是在 save() 或 find() 等方法中传递的选项。它不像 Parse.Clous.useMasterKey (已弃用)必须放在我的函数顶部
标签: json node.js parse-platform parse-server parse-cloud-code