我试图在Parse中运行一些云函数,下面是我在Stackoverflow (Parse iOS SDK: Calling Cloud Functions From Xcode)上发现的一个问题。下面是我想在我的应用程序中调用的函数:
var moment = require("moment");
Parse.Cloud.define("registerActivity", function(request, response) {
var user = request.user;
user.set("lastActive", new Date());
user.save().then(function (user) {
response.success();
}, function (error) {
console.log(error);
response.error(error);
});
});
Parse.Cloud.define("getOnlineUsers", function(request, response) {
var userQuery = new Parse.Query(Parse.User);
var activeSince = moment().subtract("minutes", 2).toDate();
userQuery.greaterThan("lastActive", activeSince);
userQuery.find().then(function (users) {
response.success(users);
}, function (error) {
response.error(error);
});
});我想在我的视图控制器中的一个registerActivity中调用viewDidLoad函数。到目前为止我的情况是这样的。我需要一些帮助来完成这个功能:
override func viewDidLoad() {
super.viewDidLoad()
let currentUser = PFUser.currentUser()
PFCloud.callFunctionInBackground("registerActivity", withParameters: currentUser){
if (!error){
}
}
// Uncomment the following line to preserve selection between presentations
// self.clearsSelectionOnViewWillAppear = false
// Register cell classes
self.collectionView.registerClass(UICollectionViewCell.self, forCellWithReuseIdentifier: reuseIdentifier)
}我在"PFCloud“一行中得到了一个错误,它声明:PFUser is not identical to [NSOBject:Anyobject]。如何为当前用户调用此registerActivity函数?
谢谢!
更新
在viewDidLoad中更新函数调用以:
PFCloud.callFunctionInBackground("registerActivty", withParameters: nil, block: nil)这导致了一个例外:
Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[__NSPlaceholderDictionary initWithObjects:forKeys:count:]: attempt to insert nil object from objects[1]'最后一次更新:通过来解决问题:
PFCloud.callFunctionInBackground("registerActivity", withParameters: [:], target: nil, selector: "block:")谢谢你的帮助!
发布于 2014-08-08 02:53:13
如果currentUser已经登录,则不需要提供它。在服务器端,request.user已经设置为发出请求的登录用户。在这种情况下,您可以使用一个参数为空字典来调用云函数。
另一方面,您所得到的错误是因为不能将PFUser对象传递给云函数。您可以将用户id作为["id": currentUser.objectId]传递。然后,在服务器中,您可以以request.params.id的形式访问它,以便通过id获得用户。这是为了防止您想要为任何用户调用云函数(即使它没有登录)。
https://stackoverflow.com/questions/25195158
复制相似问题