我正在使用托管在 back4app 上的 Parse SDK 开发一个 iOS 应用程序,我在 back4app 仪表板中的应用程序在 Cloud Code 中托管一个 main.js 文件,该文件发送推送通知,它被代码调用并且工作正常。
现在我在我的云代码中添加了一个 blockuser.js
文件,该文件应该编辑 isBlocked
列( bool 类型) _User 类中的特定用户并将其设置为 true
,这是我使用的代码:
Parse.Cloud.define("blockUser", function(request, response) {
var userId = request.params.userId,
var User = Parse.Object.extend('_User'),
user = new User({ objectId: userId });
user.set('isBlocked', true);
Parse.Cloud.useMasterKey();
user.save().then(function(user) {
response.success(user);
}, function(error) {
response.error(error)
});
});
这是我编写的调用该函数的 Swift 代码:
let request = ["userId" : userPointer.objectId!] as [String : Any]
PFCloud.callFunction(inBackground: "blockUser", withParameters: request as [String : Any], block: { (results, error) in
if error == nil {
print ("\(userPointer["username"]!) has been blocked!")
// error in cloud code
} else {
print ("\(error!.localizedDescription)")
}})
Xcode
控制台打印出以下消息:
[Error]: Invalid function. (Code: 141, Version: 1.14.2)
事实上,blockUser
函数根本不起作用。
有人知道我在 .js
或 swift 代码中做错了什么吗?
最佳答案
经过几次尝试,我已经弄清楚了,这是我在 Cloud Code 的 main.js 文件中添加的函数:
// BLOCK A USER ----------------------------------------
Parse.Cloud.define("blockUser", function(request, response) {
var userId = request.params.userId;
var User = Parse.Object.extend('_User'),
user = new User({ objectId: userId });
user.set('isBlocked', true);
Parse.Cloud.useMasterKey();
user.save(null, { useMasterKey: true } ).then(function(user) {
response.success(user);
}, function(error) {
response.error(error)
});
});
这是调用 blockUser
函数的 Swift 3 代码:
let request = [
"userId" : userPointer.objectId!
] as [String : Any]
PFCloud.callFunction(inBackground: "blockUser", withParameters: request as [String : Any], block: { (results, error) in
if error == nil {
print ("\(userPointer["username"]!) has been blocked!")
// error
} else {
print ("\(error!.localizedDescription)")
}})
关于javascript - 使用 Cloud Code javascript 和 iOS Parse SDK 编辑用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40124319/