解析 - Obj-C到云代码

时间:2016-01-24 16:37:37

标签: javascript objective-c parse-platform cloud-code

我试图掌握Parse.com的云代码,但这非常困难。我的问题是我想重写一个在云代码(javascript)中操纵数组的查询

以下是一些代码

PFQuery * quer = [PFQuery queryWithClassName:@"Spel"];
NSString * playerID = [[PFUser currentUser] objectForKey:@"fbid"];
[quer whereKey:@"lobby" containsAllObjectsInArray:@[playerID]];
[quer findObjectsInBackgroundWithBlock:^(NSArray * _Nullable objects, NSError * _Nullable error) {
    for (PFObject * obj in objects) {
        if (!error) {


        NSMutableArray * ready = [[obj objectForKey:@"ready"] mutableCopy];
        if (![ready containsObject:[[PFUser currentUser] objectForKey:@"fbid"]]) {
                [ready addObject:[[PFUser currentUser] objectForKey:@"fbid"]];
        }

        [obj setObject:ready forKey:@"ready"];
        [obj saveInBackgroundWithBlock:^(BOOL succeeded, NSError * _Nullable error) {
            if (succeeded) {
            //success}

我希望在云代码中运行相同的代码,因为它是一个多人游戏,人们同时点击按钮,存在一个问题,即数组被操纵错误。

有些灵魂会在那里知道怎么做?因为感觉比仅使用云代码保存普通对象要复杂一点

亲切的问候, 马丁

1 个答案:

答案 0 :(得分:1)

看起来代码找到当前用户所在的Spel对象" fbid"是在Spel" lobby"阵列。对于找到的每一个,添加用户" fbid"到斯佩尔"准备好"属性。

你在JS中说如下:

var _ = require('underscore');

Parse.Cloud.define("myCloudFunction", function(request, response) {
    var fbid = request.user.get("fbid");
    var query = new Parse.Query("Spel");
    query.equalTo("lobby", fbid);
    query.find().then(function(results) {
        _.each(results, function(spel) {
            spel.addUnique("ready", fbid);
        });
        return Parse.Object.saveAll(results);
    }).then(function(result) {
        response.success(result);
    }, function(error) {
        response.error(error);
    });
});