在这个例子中我将使用的代码如下
1)云代码
Parse.Cloud.define('editUser',function(request,response) { var userId = request.params.userId,newColText = request.params.newColText; var User = Parse.Object.extend('_User'),user = new User({ objectId: userId }); user.set('new_col',newColText); Parse.Cloud.useMasterKey(); user.save().then(function(user) { response.success(user); },function(error) { response.error(error) }); });
2)从iOS调用
[PFCloud callFunction:@"editUser" withParameters:@{ @"userId": @"someuseridhere",@"newColText": @"new text!" }];
问题1 =
(request,response)
我对这是什么感到困惑这就像在iOS中的类型转换(在iOS调用中),我想将NSString传递给这个函数(“userId”),而在云代码函数里面我会称之为“请求”?这是怎么回事?
问题2 =
Parse.Object.extend('_User')
这是从Parse数据库中获取“User”类,以便可以通过在下面的行中创建一个新的“用户”来更新它的“PFObject”?
这是一个…
PFObject *userObject = [PFObject objectWithClassName:@"User"]?
问题3 =
user.set('new_col',newColText)
这显然会将值保存到PFUser中(〜我认为).我知道“newColText”变量是要设置的文本,但是什么是“new_col”?只有我能想到的是,它将数据库中的一个新列的名称设置为通过“请求”传递的任何类型的数据库?
这是一个…
[[PFUser currentUser] setObject: forKey:]
问题4 =
Parse.Cloud.useMasterKey()
没有太技术,这是基本上我必须输入,我可以从另一个用户编辑一个“用户”对象?
问题5 =
user.save().then(function(user) { response.success(user); }
这是一个…
[user saveInBackgroundWithBlock:]?
如果是的话,是的
function(error) { response.error(error)
只要设置saveInBackgroundWithBlock有错误就会发生什么?
请记住,我知道iOS – 不是JavaScript.所以尽可能地描述一些了解苹果领域的人.
解决方法
>请求参数用于访问作为对云功能的请求/调用的一部分的所有内容,包括传递的参数(request.params),客户端(request.user)上验证的用户以及其他一些您可以在documentation中了解的内容.响应是为了将信息发回调用代码,您通常使用可选的字符串/对象/ etc调用response.success()或response.error()回应,再次documentation here.
>这是创建一个用户实例的一种方法,因为它是一个特殊的内部类,它被命名为_User,而与_Role和_Installation相同.它正在创建具有ID的用户的实例,而不创建新的(在保存之前不会有ID).当您以这种方式创建对象时,您可以通过更改要更新的属性“修补”它.
>再次看一下documentation或an example,第一个参数是列名(如果不存在就会被创建),第二个值就是你想要的列设置.
>当您需要执行用户登录到客户端的权限时,您必须执行Parse.Cloud.useMasterKey().这意味着“忽略所有的安全,我知道我在做什么”.
>你看到一个承诺链,链中的每一步都允许你传递一个“成功”处理程序和一个可选的“错误”处理程序.有一些很棒的documentation.当你想要按顺序做几件事情时,这是非常方便的.
示例代码:
var post = new Parse.Object('Post'); var comment = new Parse.Object('Comment'); // assume we set a bunch of properties on the post and comment here post.save().then(function() { // we know the post is saved,so now we can reference it from our comment comment.set('post',post); // return the comment save promise,so we can keep chaining return comment.save(); }).then(function() { // success! response.success(); },function(error) { // uh oh! // this catches errors anywhere in the chain response.error(error); });