データテーブルのJavaScript API

 

データテーブルのJavaScript APIを利用することで、配信時にウィジェットからデータテーブル上の値を参照/更新可能です。

利用する場合は管理画面上で作成したデータテーブルを開き、設定タブからread権限とwrite権限を設定してください。

※デフォルトの設定では両権限は設定されていない状態です

__________2017-08-08_12.52.56.png


read権限を使用する時の注意

read権限を設定した場合、ブラウザのフロントからテーブル内のデータが参照可能になります。
個人情報など、機密性の高い情報を扱うテーブルは権限をOFFにすることを推奨します。

上記のような情報をアクション上から参照したい場合は、HTMLでembedすることでリスクを回避できます。

 
JavaScript APIの仕様

イニシャライズ

Widget上からの参照を行う場合、 widget.collection('{{テーブルID}}') でイニシャライズされます。
特に断りがない場合、下記の内容は上記の形式でイニシャライズされていることを前提としています。

 

getByKey: データを主キーで取得


// collectionのaliasを取得
var item_collection = widget.collection('item'); // データを取得 item_collection.get('item_id1', function(err, item) { }); // 下記の記法でも同じ動作をします item_collection.query('item_id1').get(function(err, item){ }); // field指定も可能です item_collection.query('item_id1').field("item_name").get(function(err, item_name){ });

 

 

getByKeys: データを主キーの配列で複数取得

// collectionのalias取得
var item_collection = widget.collection('item');

// データを取得
item_collection.get(['item_id1', 'item_id2'], function(err, items) {
});
 

getByFilters: データをqueryで複数件取得

※このメソッドはデータテーブルにインデックスが設定されていることを前提としています。通常設定のデータテーブルでは正常に動作しません。

// collectionのalias取得
var item_collection = widget.collection('item');

// limit指定
// default: 30
// < 100
item_collection
  .filter('price', '>=', 500)
  .filter('priority', '=', 1)
  .order('price', {'descending': true})
  .limit(50)
  .field('item_name')
  .get(function(err, item_names) {
});

filterに使用可能な演算子

filterメソッドの第二引数には、以下を指定することができます。

  • '<', 'lt'
  • '<=', 'lte'
  • '=', 'eq'
  • '>=', 'gte'
  • '>', 'gt'

クエリを書く際の制限について

・フィールドに対して、等式の条件であれば複数個組み合わせる事が可能です
・フィールドに対して、不等式の条件と等式の条件を組み合わせることは出来ません
・同じフィールドに対して不等式の条件を組み合わせることは可能です。
・取得できるデータ行は、最大で100行です

 

JSからデータを削除する

// collectionのalias取得
var item_collection = widget.collection('item');

// 主キーを指定してDelete
item_collection.delete('item_id1', function(err) {
});
 

JSからデータを書き込む

// 1. collectionのalias取得
var item_collection = widget.collection('item');

item.name = '変更したいアイテム名';
item_collection.query('item_id1').set(item, function(err){
});

// 下記の記法でも同じ動作をします
item_collection.query('item_id1').field('name').set('変更したいアイテム名', function(err){
});

スキーマの取扱

スキーマがない状態のデータテーブルに値をセットしようとした場合、 オブジェクトの一つ目がキーとして指定されます。