アイテムの操作
アイテムはデータストアの各行に相当するデータです。データストアを通して取得したデータを保存したり、新しいデータを作成したりすることができます。
アイテムの取得
データストアの中にある全アイテムを取得します。
const items = await datastore.items();
特定のアイテムを取得
特定のアイテムを取得する場合には、アイテムIDを指定します。
const item = await datastore.item('ITEM_ID');
新規のアイテムを作成
新規アイテムを作成する場合には、引数なしで item
を実行します。
const newItem = await datastore.item();
フィールドに値を設定
続けて、この newItem
に対してフィールドを設定します。以下のコードでは、あらかじめ message
フィールドを用意してある前提です。
newItem.set('message', 'Hello, Hexabase!');
返り値は自分自身なので、 set
メソッドはメソッドチェーンで繋げることができます。
newItem
.set('message', 'Hello, Hexabase!')
.set('name', 'Hexabase');
別なアイテムを関連付ける
別のアイテムを自動リンクとして関連付ける場合には、link
メソッドを実行します。
newItem.link(anotherItem);
link
メソッドも自分自身を返しますので、メソッドチェーンで繋げることができます。
newItem
.link(anotherItem)
.link(yetAnotherItem);
アイテムの関連付けを解除する
アイテムの関連付けを解除する場合には、unlink
メソッドを実行します。
newItem.unlink(anotherItem);
unlink
メソッドも自分自身を返しますので、メソッドチェーンで繋げることができます。
newItem
.unlink(anotherItem)
.unlink(yetAnotherItem);
ファイルをアップロードする
ファイルを紐付ける場合には、まず file
メソッドで FileObject
を取得します。
const file = item.file();
そして、このファイルに Blob
と ファイル名
を設定します。
const blob = new Blob(['Hello world'], { type: 'text/plain' });
file
.set('name', 'test_file.txt')
.set('data', blob);
後はファイル型に設定されているフィールドにセットして保存します。
await item
.set('test_file', [file])
.save();
アイテムの保存
アイテムの保存は、save
メソッドを実行します。
await newItem.save();
アイテムの更新
アイテムの更新も、save
メソッドを実行します。
newItem.set('message', 'Hello, Hexabase again!');
await newItem.save();
現在のステータスを取得
現在のステータスは status
メソッドで取得できます。
const status = await newItem.status();
ステータスを更新
ステータスを更新する際には execute
メソッドを実行します。この処理ではデータは更新されません(ステータスの変更のみ行われます)。
await newItem.execute('nextStatus');
現在のアイテムが実行できるステータスアクションは statusActions
メソッドで取得できます。
const statusActions = await newItem.statusActions();
アイテムの削除
アイテムを削除する場合には、delete
メソッドを実行します。
await newItem.delete();
リアルタイム通知を受け取る
アイテムの変更をリアルタイムで受け取る場合には、subscribe
メソッドを実行します。1つ目の引数はイベントを指定します。現在は update
のみ指定できます。
item.subscribe('update', (item) => {
console.log(item);
});
コメントを作成、保存
リアルタイム通知はコメントを作成した際に受け取ることができます。以下のコードで、アイテムの subscribe
メソッドが呼ばれます。
const comment = await item.comment();
commnet.set('comment', 'Hello, Hexabase!');
await comment.save();