レコードを操作する(データベースプラグイン)

ここでは、サイトアカウントに存在するデータベースインスタンスを、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を反映させるには、最後に必ず保存を実行してください