質問

シナリオ = 私はゆっくりと、しかし確実に、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!"

}];

このコードはから取得されました ここ

質問1 =

(request, response) 

これは何なのか混乱しています。これは、(iOS 呼び出しで) NSString をこの関数 (「userId」) に渡し、クラウド コード関数内でそれを「リクエスト」と呼びたいと言っている iOS のタイプキャストに似ていますか?それがここで起こっていることですか?

質問2 =

Parse.Object.extend('_User') 

これは、Parse データベースから「User」クラスを取得して、ある種の「PFObject」がその下の行に新しい「user」を作成して更新できるようにしているのでしょうか?

これは...のようなものですか?

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 の領域を理解している人に対して、できるだけ説明的な表現を心がけてください。

役に立ちましたか?

解決

ここに私の質問があります:

  1. requestパラメータは、Cloud関数への要求/呼び出しの一部であるすべてにアクセスするためのもので、渡されたパラメータ(request.params)、クライアント上で認証されているユーザー(request.user)と他のものも含まれます。 ドキュメントresponseは、情報を呼び出し側のコードに送り返すためのもので、一般に、応答に含まれるオプションの文字列/オブジェクト/ etcを使用してresponse.success()またはresponse.error()を呼び出します。文書化ここにある
  2. Userのインスタンスを作成する方法であり、これは特別な内部クラスではなく_User_Roleと同じです。それはIDを持つユーザーのインスタンスを作成し、新しいものを作成しない(保存するまでIDはありません)。このようにしてオブジェクトを作成すると、更新したいプロパティを変更するだけで「パッチ」できます。
  3. 再び Documentation または>例、最初のパラメータは列名です(それが存在しない場合は作成されます)、2番目の値は何です。その列に設定したいです。
  4. クライアントにログインしたユーザーがやる権限がないことを行う必要がある場合は、_Installationを実行する必要があります。それは「すべてのセキュリティを無視し、私がしていることを知っています」。
  5. あなたが約束チェーンを見ている、チェーンの各ステップでは、「成功」ハンドラとオプションの「エラー」ハンドラを渡すことができます。いくつかの素晴らしいドキュメントがあります。あなたが順番にいくつかのものをやりたいとき、それはスーパー便利です。
  6. サンプルコード:

    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);
    });
    
    .

他のヒント

私もあなたとほぼ同じ立場ですが、私の考えは次のとおりです。

  1. いいえ、これらは関数によって受け取られるパラメータです。何かが呼び出すと、 editUser クラウド関数では、使用する 2 つのオブジェクトがあります。 リクエスト & 応答. 。基本的にリクエストは iOS デバイスがサーバーに送信するものであり、レスポンスはサーバーが iOS デバイスに送信するものです。
  2. それほどではありません。のサブクラスを作成するようなものです _ユーザー.
  3. Parse オブジェクト タイプをデータベース テーブルとして、そのインスタンスを行として考えてください。の set 'newColText' の値を属性/列 'new_col' に設定 (derp) します。
  4. よくわかりませんが、User オブジェクトを処理しないため、その関数を使用したことはありません。でも、それかもしれない。
  5. ほぼその通りです。しかし、それはより似たものです (JS と Obj-C を混合した疑似コード):

[user saveInBackgroundWithBlock:^(BOOL succeeded, NSError *error){ if(error){ response.error(error); // mark the function as failed and return the error object to the iOS device } else{ response.success(user); // mark the function call as successful and return the user object to the iOS device } }];

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top