カスタムフィールド

開発者は、既定フィールドに加え、任意のフィールド(年齢、性別、誕生日等)を追加できます。ただし、SDK により予約されているフィールド名は使用できません。予約されているフィールド名については JSDoc を参照してください。

カスタムフィールドの設定と変更

ユーザーのカスタムフィールドを設定・変更する例を以下に挙げます。削除したいフィールド名を配列で渡すことで、同時にカスタムフィールドを削除することができます。

  • // Get the currently logged-in user.
    var user = KiiUser.getCurrentUser();
    
    // Set the user identify.
    var identityData = {
      "username": "user_123456",
      "emailAddress": "user_123456@example.com",
      "phoneNumber": "+819012345678"
    };
    
    // Set custom fields.
    var customFields = {
      "age": 30,
      "score": 12344300
    };
    
    // Remove a custom filed.
    var removedFields = ["weight", "chest"];
    
    // Update the user attributes.
    user.update(
      identityData,
      {
        success: function(theUser) {
          // Do something.
        },
        failure: function(theUser, errorString) {
          // Handle the error.
        }
      },
      customFields,
      removedFields
    );
  • // Get the currently logged-in user.
    var user = KiiUser.getCurrentUser();
    
    // Set the user identify.
    var identityData = {
      "username": "user_123456",
      "emailAddress": "user_123456@example.com",
      "phoneNumber": "+819012345678"
    };
    
    // Set custom fields.
    var customFields = {
      "age": 30,
      "score": 12344300
    };
    
    // Remove a custom filed.
    var removedFields = ["weight", "chest"];
    
    // Update the user attributes.
    user.update(identityData, null, customFields, removedFields).then(
      function(theUser) {
        // Do something.
      }
    ).catch(
      function(error) {
        // Handle the error.
        var theUser = error.target;
        var errorString = error.message;
      }
    );

既存のフィールドを更新対象として指定しない場合、そのフィールドはそのまま Kii Cloud 上に保持されます。

update() メソッドが正常に完了すると、フィールドが Kii Cloud および KiiUser インスタンスで更新されます。

また既定フィールドとカスタムフィールドの設定・変更は同時に行えます。

ユーザー属性の変更は、基本的にログイン中のユーザー本人に対してのみ実行できます。詳しくは ユーザー属性 をご覧ください。

カスタムフィールドの参照

ユーザーのカスタムフィールドを取得する例を以下に挙げます。

  • // Get the currently logged-in user.
    var user = KiiUser.getCurrentUser();
    
    // Refresh the user to get the latest user info from Kii Cloud.
    user.refresh({
      success: function(theUser) {
        // Get custom fields.
        var age = theUser.get("age");
        var gender = theUser.get("male");
        var height = theUser.get("height");
        var isMember = theUser.get("isMember");
      },
      failure: function(user, errorString) {
        // Handle the error.
      }
    });
  • // Get the currently logged-in user.
    var user = KiiUser.getCurrentUser();
    
    // Refresh the user to get the latest user info from Kii Cloud.
    user.refresh().then(
      function(theUser) {
        // Get custom fields.
        var age = theUser.get("age");
        var gender = theUser.get("male");
        var height = theUser.get("height");
        var isMember = theUser.get("isMember");
      }
    ).catch(
      function(error) {
        // Handle the error.
        var theUser = error.target;
        var errorString = error.message;
      }
    );

例のように get メソッドを利用して値を取得します。

ユーザー作成時のカスタムフィールドの設定

ユーザーの作成を行うタイミングで、カスタムフィールドの初期値を設定する例を以下に挙げます。

KiiUser のインスタンスを生成した後に set メソッドを使って、カスタムフィールドを設定することができます。

  • // Create a user.
    var username = "user_123456";
    var password = "123ABC";
    var user = KiiUser.userWithUsername(username, password);
    
    // Set custom fields.
    user.set("age", 30);
    user.set("score", 0);
    
    // Register the user.
    user.register({
      success: function(theUser) {
        // Do something.
      },
      failure: function(theUser, errorString) {
        // Handle the error.
      }
    });
  • // Create a user.
    var username = "user_123456";
    var password = "123ABC";
    var user = KiiUser.userWithUsername(username, password);
    
    // Set custom fields.
    user.set("age", 30);
    user.set("score", 0);
    
    // Register the user.
    user.register().then(
      function(theUser) {
        // Do something.
      }
    ).catch(
      function(error) {
        // Handle the error.
        var theUser = error.target;
        var errorString = error.message;
      }
    );