02.基本的な使い方
ここでは、データモデルマネージャの作成からデータモデルの作成・削除、データアイテムの作成・更新・削除について、基本的な使い方の説明をします。
- データモデルマネージャ、データモデル、データアイテムの関係
- データモデルマネージャの作成
- データモデルの作成
- データモデルの削除
- データアイテムの生成
- データアイテムの取得
- データアイテムの削除
- データアイテムからプロパティの取得
- データアイテムに値を格納
データモデルマネージャ、データモデル、データアイテムの関係
hifiveのデータモデル機構は、以下のような3つの階層からなります。
データモデルマネージャ(以下「データモデルマネージャ」と略記)は複数のデータモデルを管理し、データモデルは複数のデータアイテムを持ちます。
データベースに例えると、
- データモデルマネージャ:データベース(の1インスタンス)
- データモデル:表
- データアイテム:レコード
のように考えるとよいでしょう。
データモデル機構を使うときの基本的な流れは
データモデルマネージャを生成 → データモデルを生成 → データアイテムを生成
となります。
データモデルマネージャの作成
データモデルマネージャはh5.core.data.createManagerを使って作成します。
createManagerはマネージャを作成して返します。
第1引数にデータモデルマネージャの名前を指定します。必須です。
第2引数にはデータモデルマネージャを公開する名前空間を文字列で指定します。指定された名前空間にデータモデルマネージャの名前でデータモデルマネージャを公開します。空文字を指定した場合はwindow直下に公開します。第2引数を省略した場合はマネージャをグローバルに公開しません。
上のコードの例では、sample.SampleManagerにデータモデルマネージャが公開されます。インスタンスはmanagerと同じです。
データモデルの作成
データモデルは、データモデルマネージャのcreateModelを使って作成します。
createModel()は、引数にディスクリプタオブジェクトを取ります。
「ディスクリプタ」とは、このデータモデルに属する各データアイテムがどのようなプロパティを持っているか、またそのプロパティにはどのような型・制約があるかを記述したものです。
ディスクリプタの記述については、次の章(ディスクリプタの書き方)で説明します。
name: 'SampleModel',
schema: {
id: {
id: true
},
name: {
type: 'string'
},
point: {
type: 'integer',
defaultValue: 0
}
}
});
データモデルの削除
データモデルマネージャからデータモデルを削除するには、dropModelメソッドを使用します。
manager.dropModel('SampleModel');
データアイテムの生成
データアイテムは、データモデルのcreateを使って作成します。
id: '001',
name: '田中太郎',
point: 50
});
item.get('id') === '001' // true
item.get('name') === '田中太郎' // true
item.get('point') === 50 // true
戻り値はデータアイテムインスタンスです。引数に指定したオブジェクト通りに値が格納されます。
また、値の指定を省略したプロパティには、デフォルト値が入ります。
デフォルト値はdefaultValueが指定されていればその値、指定されていない場合で、typeに配列が指定されている場合は空のObservableArrayインスタンス、そうでない場合はnullが格納されます。IDとして指定されたプロパティの値は省略できません。
id: '002' // IDとして指定されたプロパティなので、値を省略できない
});
item2.get('id') === '002' // true
item2.get('name') === null // true
item2.get('point') === null // true
create に配列で複数のオブジェクトを指定すると、複数のアイテムを同時に作成することができます。
// 戻り値は生成されたデータアイテムを要素に持つ配列
データアイテムの取得
登録されたデータアイテムをデータモデルから取得するには、getメソッドを使います。引数に、取得したいデータアイテムのID属性の値を指定します。
var item = model.get('001');
// idが'001','002'であるデータアイテムを取得
// 戻り値はデータアイテムの配列
var items = model.get(['001', '002']);
データアイテムの削除
データアイテムの削除は、データモデルのremoveメソッドを使います。引数に削除したいデータアイテムのID属性の値を指定します。
// 戻り値は削除されたデータアイテム。
var removedItem = model.remove('001');
// idが'0001','0002','0003'のデータアイテムを削除。
// 戻り値は削除されたデータアイテムの配列
var removedItems = model.remove(['0001', '0002', '0003']);
データアイテムからプロパティの取得
データアイテムから値を取得するにはget()メソッドを使います。引数にプロパティ名を指定すると、そのプロパティが持つ値が返ってきます。また、引数なしで呼び出すとデータアイテムの持つすべてのプロパティについて値が取得できるオブジェクトが返ってきます。プロパティ名がキー名、値がプロパティに対応する値を格納したオブジェクトです。
id: '001',
value1: 'AAA',
value2: 'BBB'
});
item.get('id') === '001'; // true
item.get('value1') === 'AAA'; // true
item.get('value2') === 'BBB'; // true
// 引数なしでget
var itemValue = item.get();
itemValue.id === '001'; // true
itemValue.value1 === 'AAA'; // true
itemValue.value2 === 'BBB'; // true
// 取得したオブジェクトを書き換えても元のデータアイテムは書き変わらない
itemValue.value1 = 'CCC';
item.get('value1'); // 'AAA'
データアイテムに値を格納
データアイテムへの値の格納はset()メソッドを使います。
var model = manager.createModel({
name: 'SampleModel',
schema: {
id: {
id: true
},
val1: null,
val2: null,
val3: null,
ary: {
type: 'any[]'
}
}
});
var item = model.create({
id: '001',
val1: 'v1',
val2: 'v2',
val3: 'v3'
});
item.set('val1', 'new value'); // 第一引数にプロパティ名、第二引数にセットする値
item.set({ // オブジェクトでまとめてセットすることも可能
val2: 'vv22',
val3: 'vv33'
});
item.set('ary', ['A', 'B']); // 配列をセット
次のステップ ⇒ ディスクリプタの書き方