7. JSONオブジェクトストレージ

ここではJSONオブジェクトストレージの利用方法について説明します。

7.1. オブジェクトバケット

オブジェクトバケットは baas.ObjectBucket クラスのインスタンスとして生成します。 コンストラクタには Service とバケット名を渡します。

オブジェクトのクエリ操作などにはバケットが必ず必要になります。

bucket = baas.ObjectBucket(service, "TodoTutorial1")

7.2. オブジェクトの追加

オブジェクトを保存するには、オブジェクトバケットの insert() を呼び出します。

引数には保存したいオブジェクトを dict 形式で指定します。 返り値には登録後のオブジェクトデータが dict 形式で返却されます。

obj = {description: "Foo Bar"}
saved_obj = bucket.insert(obj)

7.3. アクセス制御

オブジェクト単位でアクセス制御を行うことができます。 オブジェクトの ACL プロパティに設定を記述することで、アクセス権を指定できます。

obj = {
    description: "Foo Bar",
    ACL: {
        "owner": "オーナID",
        "r": ["ユーザID", "g:グループ名"],
        "w": ["ユーザID"],
        "u": [],
        "d": [],
        "admin": []
    }
}

ACL の詳細については デベロッパーマニュアル の「セキュリティ:ACL」の節をご覧ください。

7.4. オブジェクトの更新

オブジェクトを更新するには、ObjectBucket の update() を呼び出します。

引数には更新したいオブジェクトの id と更新データを指定します。 その際、更新対象のオブジェクトにオブジェクトIDを指定する必要があります。

result = bucket.update("オブジェクトID", {"description": "Bar"})

7.5. オブジェクトの削除

オブジェクトを削除するには、 ObjectBucket の remove() を呼び出します。

remove() の引数には、削除対象のオブジェクトIDを指定します。

bucket.remove("オブジェクトID")

remove_with_query() を使用すると、検索条件を指定して一括削除ができます。

bucket.remove_with_query({"score": {"$lt": 30}})