解析 - Obj-C 到云代码
Parse - Obj-C to 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}
我想在云代码中有同样的代码运行,因为它是多人游戏,人们同时点击按钮,所以存在数组操作错误的问题。
有好心人知道怎么做吗?因为感觉比用云代码保存普通对象要复杂一些
亲切的问候,
马丁
看起来代码找到了 Spel 对象,其中当前用户的 "fbid" 在 Spel 的 "lobby" 数组中。对于找到的每一个,将用户的 "fbid" 添加到 Spel 的 "ready" 属性.
你会在 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);
});
});
我正在尝试掌握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}
我想在云代码中有同样的代码运行,因为它是多人游戏,人们同时点击按钮,所以存在数组操作错误的问题。
有好心人知道怎么做吗?因为感觉比用云代码保存普通对象要复杂一些
亲切的问候, 马丁
看起来代码找到了 Spel 对象,其中当前用户的 "fbid" 在 Spel 的 "lobby" 数组中。对于找到的每一个,将用户的 "fbid" 添加到 Spel 的 "ready" 属性.
你会在 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);
});
});