KiiObject の作成

ここでは、KiiObject を新規に作成する方法を説明します。KiiObject の内部に格納する JSON ドキュメントを設定する方法は、キーと値のペアの設定 を参照してください。

KiiObject の作成

KiiObject の作成を行うには、保存先 Bucket の createObject() メソッドを呼び出してクライアント側で KiiObject を作成した後、save() メソッドを呼び出します。作成された KiiObject の ID は、Kii Cloud によって自動的に割り当てられます。

  • let bucket = KiiUser.currentUser()!.bucketWithName("MyBucket")
    
    // Create a KiiObject.
    var obj = bucket.createObject();
    
    // Set key-value pairs.
    obj.set("score", 987);
    obj.set("mode", "easy");
    obj.set("premiumUser", false);
    
    // Save the KiiObject.
    obj.save({
      success: function(theObject) {
        // Do something.
      },
      failure: function(theObject, errorString) {
        // Handle the error.
      }
    });
  • let bucket = KiiUser.currentUser()!.bucketWithName("MyBucket")
    
    // Create a KiiObject.
    var obj = bucket.createObject();
    
    // Set key-value pairs.
    obj.set("score", 987);
    obj.set("mode", "easy");
    obj.set("premiumUser", false);
    
    // Save the KiiObject.
    obj.save().then(
      function(theObject) {
        // Do something.
      }
    ).catch(
      function(error) {
        var theObject = error.target;
        var errorString = error.message;
        // Handle the error.
      }
    );

save() メソッドを呼ぶのを忘れないようにしてください。このメソッドを呼ぶまで、KiiObject の内容は Kii Cloud に反映されません。

このコードを実行すると、Kii Cloud の指定された Bucket(この例ではユーザースコープの MyBucket)に KiiObject が作成されます。

ここでは、save() メソッドの実行前に、set() メソッドで 3 つのフィールドに値を格納しています。値の格納方法は、キーと値のペアの設定 を参照してください。

ID を指定して KiiObject を作成

作成された KiiObject には自動的に ID が付与されますが、明示的に ID を指定して KiiObject を作成することもできます。

以下に、先ほどと同じ KiiObject を ID を指定して作成する例を挙げます。

  • var id = "score_userX";
    
    // Check whether the KiiObject ID is valid.
    if(!KiiObject.isValidObjectID(id)) {
      // The KiiObject ID is invalid.
    }
    
    // Create a KiiObject with the specific ID.
    var obj = KiiUser.currentUser()!.bucketWithName("MyBucket").createObjectWithID(id);
    
    // Set key-value pairs.
    obj.set("score", 987);
    obj.set("mode", "easy");
    obj.set("premiumUser", false);
    
    // Save the KiiObject.
    obj.saveAllFields({
      success: function(theObject) {
        // Do something.
      },
      failure: function(theObject, errorString) {
        // Handle the error.
      }
    });
  • var id = "score_userX";
    
    // Check whether the KiiObject ID is valid.
    if(!KiiObject.isValidObjectID(id)) {
      // The KiiObject ID is invalid.
    }
    
    // Create a KiiObject with the specific ID.
    var obj = KiiUser.currentUser()!.bucketWithName("MyBucket").createObjectWithID(id);
    
    // Set key-value pairs.
    obj.set("score", 987);
    obj.set("mode", "easy");
    obj.set("premiumUser", false);
    
    // Save the KiiObject.
    obj.saveAllFields().then(
      function(theObject) {
        // Do something.
      }
    ).catch(
      function(error) {
        var theObject = error.target;
        var errorString = error.message;
        // Handle the error.
      }
    );

ID は createObjectWithID() メソッド実行時に指定します。また ID の妥当性を isValidObjectID() メソッドで確認できます(使用可能な ID のパターンについては JSDoc) を参照してください)。

明示的に ID を指定した場合は、saveAllFields() メソッドを実行することにより Kii Cloud 上に KiiObject が新規作成されます。ID 指定の場合は save() メソッドによる新規作成はできません。

なお、上記の例において "score_userX" という ID を持つ KiiObject がサーバーにすでに存在していた場合は、この KiiObject が上書きされます。詳細については JSDoc を参照してください)。

KiiObject アクセスのヒント

  • アプリケーションスコープに書き込めない:

    アプリケーションスコープはすべてのユーザーや、ログイン前の匿名ユーザーの状態でも読み込めますが、書き込むにはユーザーのログインが必要です。もし、アプリでユーザーのログイン操作を省略したい場合は、匿名ユーザーのままアプリケーションスコープの ACL を変更するのではなく、仮ユーザー(Pseudo User)としてログインする設計をおすすめします。詳細は、仮ユーザー(Pseudo User) をご覧ください。

    また、アプリケーションスコープの利用にはセキュリティの考慮も必要です。詳細は、セキュリティ をご覧ください。

  • 書き込んだはずの KiiObject が参照できない:

    Bucket のスコープが意図したとおりかどうか、ご確認ください。

    書き込みと読み込みを異なるスコープで行うと、Bucket 名が同じであっても書き込んだ内容を取得できません。開発者ポータルのデータブラウザを使って読み込んだ場合でも、同様です。

    たとえば、Kii.bucketWithName("myBucket") でアプリケーションスコープに作成したデータは、KiiUser.getCurrentUser().bucketWithName("myBucket") でユーザースコープから読み込もうとしても、結果が得られません。