首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为当前用户调用解析云函数

为当前用户调用解析云函数
EN

Stack Overflow用户
提问于 2014-08-08 02:18:27
回答 1查看 3.6K关注 0票数 1

我试图在Parse中运行一些云函数,下面是我在Stackoverflow (Parse iOS SDK: Calling Cloud Functions From Xcode)上发现的一个问题。下面是我想在我的应用程序中调用的函数:

代码语言:javascript
复制
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函数。到目前为止我的情况是这样的。我需要一些帮助来完成这个功能:

代码语言:javascript
复制
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中更新函数调用以:

代码语言:javascript
复制
PFCloud.callFunctionInBackground("registerActivty", withParameters: nil, block: nil)

这导致了一个例外:

代码语言:javascript
复制
Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[__NSPlaceholderDictionary initWithObjects:forKeys:count:]: attempt to insert nil object from objects[1]'

最后一次更新:通过来解决问题:

代码语言:javascript
复制
PFCloud.callFunctionInBackground("registerActivity", withParameters: [:], target: nil, selector: "block:")

谢谢你的帮助!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-08-08 02:53:13

如果currentUser已经登录,则不需要提供它。在服务器端,request.user已经设置为发出请求的登录用户。在这种情况下,您可以使用一个参数为空字典来调用云函数。

另一方面,您所得到的错误是因为不能将PFUser对象传递给云函数。您可以将用户id作为["id": currentUser.objectId]传递。然后,在服务器中,您可以以request.params.id的形式访问它,以便通过id获得用户。这是为了防止您想要为任何用户调用云函数(即使它没有登录)。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25195158

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档