场景 = 我正在缓慢但肯定地思考 Parse 的云代码功能正在发生的事情。我只需要那些想要回答一些简短、相对简单的问题的人的帮助,这些问题是关于一些示例云代码函数中发生了什么。
我将在这个例子中使用的代码如下
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!"
}];
此代码取自 here
问题 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。所以尽量向了解 Apple 领域的人描述。
最佳答案
以下是我对您的问题的看法:
request
参数用于访问请求/调用云函数的所有内容,它包括传递的参数 (request.params
),在客户端进行身份验证的用户 (request.user
) 以及您可以在 documentation 中了解的其他一些内容.response
是给你发回信息给调用代码的,一般调用response.success()
或者response.error()
一个可选的字符串/对象/等,再次包含在响应中 documentation here .- 这是一种创建
User
实例的方法,因为它是一个特殊的内部类,所以被命名为_User
,与_Role
相同> 和_Installation
。它正在创建一个具有 ID 的用户实例,而不是创建一个新实例(在保存之前不会有 ID)。当您以这种方式创建对象时,您只需更改要更新的属性即可“修补”它。 - 再次查看 documentation或 an example ,第一个参数是列名(如果不存在则创建),第二个值是您希望该列设置的值。
- 当您需要执行登录到客户端的用户无权执行的操作时,您必须执行
Parse.Cloud.useMasterKey()
。这意味着“忽略所有安全性,我知道我在做什么”。 - 您将看到一个 promise 链,链中的每个步骤都允许您传入一个“成功”处理程序和一个可选的“错误”处理程序。有一些很棒的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);
});
关于javascript - 解析iOS SDK : Understanding Cloud Code,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25003280/