レコードを操作する(データベースプラグイン)
ここでは、サイトアカウントに存在するデータベースインスタンスを、SDKから操作する方法について解説します。
レコードオブジェクトECHO.Databases.RecordObject
RecordObjectは、個別レコードを操作するためのオブジェクトです。
オブジェクトを生成する
新しいレコードをオブジェクトとして生成するには、コンストラクタの第一引数にデータベースインスタンスのIDを指定します。
var record = new ECHO.Databases.RecordObject("データベースインスタンスID");
既存のレコードをオブジェクトとして生成するには、コンストラクタの第二引数にレコードIDを指定します。
var record = new ECHO.Databases.RecordObject("データベースインスタンスID", "レコードID");
オブジェクトフィールド
レコードオブジェクトは、以下のフィールドを持ちます。
フィールド名 | 型 | 説明 | 変更 |
---|---|---|---|
refid | String | レコードID | ◯ |
url | String | URL | × |
url_path | String | URLパス | × |
title | String | レコードタイトル | ◯ |
description | String | 概要 | ◯ |
keywords | String | キーワード | ◯ |
robots | String | 検索エンジンロボット制御 | ◯ |
contents | Object | レコードコンテンツ | ◯ |
link_status | Number | リンク設定値 | ◯ |
owner | String | 所有ユーザー名 | × |
modified | Date | 最終更新日時 | × |
modified_user | String | 最終更新ユーザー名 | × |
created | Date | 作成日時 | × |
categories | Array <ECHO.ContentsCategoryObject> |
所属カテゴリ | ◯ |
変更不可フィールドは、サーバーから提供される静的な情報です。
フィールドからデータを取得する
フィールドからデータを取得する場合は、getメソッドを使用します。
var title = record.get("title");
Date(日時)型のフィールドからデータを取得する
Date型のフィールドからデータを取得する場合は、getDateメソッドを使用します。
var created = record.getDate("created");
フィールドにデータをセットする
オブジェクトのフィールドにデータをセットするには、putメソッドを使用します。
record.put("title", "新しいレコード");
record.put("contents", {name:"レコードコンテンツです。"});
アーカイブへレコードデータを保存する
サーバー上のアーカイブへレコードを保存するには、pushメソッドを使用します。
var record = new ECHO.Databases.RecordObject("データベースインスタンスID");
record.put("title", "新しいレコード"); // レコードのタイトルをセット
record.put("refid", "record_xyz"); // レコードIDをセット
....
// レコードを保存
var promise = record.push();
// コールバックを定義
promise.then(function(success) { // 成功時
console.log("Complete: " + success);
}, function(error) { // 失敗時
console.log("Complete: " + error);
});
アーカイブからレコードを取得する
サーバー上のアーカイブに存在する既存のレコードを取得するには、fetchメソッドを使用します。
var record = new ECHO.Databases.RecordObject("データベースインスタンスID", "レコードID");
// レコードデータを取得
var promise = record.fetch();
// コールバックを定義
promise.then(function(success) { // 成功時
console.log("Complete: " + success);
}, function(error) { // 失敗時
console.log("Complete: " + error);
});
アーカイブからレコードを削除する
サーバー上のアーカイブに存在する既存のレコードを削除するには、deleteメソッドを使用します。
var record = new ECHO.Databases.RecordObject("データベースインスタンスID", "レコードID");
// レコードデータを削除var promise = record.delete();
// コールバックを定義
promise.then(function(success) { // 成功時
console.log("Complete: " + success);
}, function(error) { // 失敗時
console.log("Complete: " + error);
});
アーカイブからレコードを検索する
サーバー上のアーカイブからレコードを検索するには、ECHO.Databases.findメソッドを使用します。
検索条件は、第二引数にリスト制御パラメータを指定します。
// レコード一覧を取得
var promise = ECHO.Databases.find("データベースインスタンスID", {q:"検索キーワード"});
// コールバックを定義
promise.then(function(success) { // 成功時
console.log("Complete: " + success);
}, function(error) { // 失敗時
console.log("Complete: " + error);
});
現在のACLを取得する
オブジェクトに現在設定されているACLを取得するには、getACLメソッドを使用します。
var current_acl = record.getACL();
ACLを変更する
オブジェクトに新しいACLを設定するには、setNewACLメソッドを使用します。
var new_acl = new ECHO.ACL(); // ACLオブジェクトを生成
new_acl.putEntryForAll(new ECHO.ACL.Entry(false, false, false, false)); // 例:非ログイン訪問者の操作権限を全て奪う
record.setNewACL(new_acl); // 新しいACLをセット
record.push(); // セットしたACLを反映させるには、最後に必ず保存を実行してください