AlierDB: createDatabase()
与えられたデータベース定義からデータベースを作成します。
この関数は非同期関数です。
構文
alierDb.createDatabase(schema, ifNotExists) => Promise<object>
引数
-
schema
:object
|Promise<object>
データベースの定義を表すオブジェクトまたはそれを与える
Promise
です。 データベース定義オブジェクトは以下のプロパティを持ちます。-
tables
:Array<object>
データベースのテーブル定義を表すオブジェクトの配列です。 各オブジェクトは以下のプロパティを持ちます。
-
name
:string
テーブル名です。
-
primaryKey
:string[] | string
|undefined
(省略可)主キーとするカラム名のリストです。
カラム名の配列、またはカンマ区切り文字列を指定します。
-
columns
:object
カラムの定義をプロパティとして持つオブジェクトです。
各カラム定義は文字列またはオブジェクトで表します。
カラム定義部が文字列の場合、それはカラムのデータ型を表す文字列と見なされます。
カラム定義部がオブジェクトの場合、以下のプロパティを持ちます。
-
type
:string
カラムのデータ型です。
-
unique
:boolean
|undefined
(省略可)UNIQUE
制約を持つかどうかです。true
ならUNIQUE
制約を持ちます。このプロパティの指定は任意です。指定がない場合、
UNIQUE
制約を持ちません(false
)。 -
nullable
:boolean
|undefined
(省略可)NOT NULL
制約を持たないかどうかです。false
ならNOT NULL
制約を持ちます。このプロパティの指定は任意です。指定がない場合、
NOT NULL
制約を持ちません(true
)。 -
defaultValue
:string
|number
|undefined
(省略可)レコード追加時の欠損を埋める既定値です。
このプロパティの指定は任意です。指定がない場合、欠損は
NULL
で埋められます。 -
foreignKey
:object
|undefined
(省略可)外部キー制約を表す、以下のプロパティを持つオブジェクトです。
-
table
:string
参照先のテーブル名です。
-
to
:string
参照先のカラム名です。
-
onUpdate
:string
|undefined
(省略可)ON UPDATE
に指定するアクションです。以下の値を指定できます。
"set-null"
"set-default"
"cascade"
"restrict"
"no-action"
このプロパティの指定は任意です。指定がない場合、
"no-action"
が使われます。 -
onDelete
:string
|undefined
(省略可)ON DELETE
に指定するアクションです。指定可能な値および既定値は
onUpdate
と同様です。
-
-
-
-
-
ifNotExists
:boolean
(省略可)CREATE TABLE
の際にIF NOT EXISTS
を加えるかどうかを表します。true
ならIF NOT EXISTS
を加えます。この引数の指定は任意です。指定がない場合、
IF NOT EXISTS
が指定されます(true
)。
返値: Promise<object>
データベース作成に成功したかどうかを表すオブジェクトを与える Promise
です。
成功時には、結果のオブジェクトは以下のプロパティを持ちます:
-
status
:true
成功したかどうかを表す
boolean
です。常にtrue
を取ります。
失敗時には、結果のオブジェクトは以下のプロパティを持ちます:
-
status
:false
成功したかどうかを表す
boolean
です。常にfalse
を取ります。 -
message
:string
|undefined
エラーメッセージです。エラーの詳細が分かっている場合にのみ定義されます。
例外
TypeError
- 引数
schema
がデータベース定義オブジェクトを与えなかった場合 - 引数
schema
にテーブル定義が含まれていなかった場合 - 引数
schema
のテーブル定義部(tables
)が配列でなかった場合
- 引数
解説
与えられたデータベース定義からデータベースを作成します。
この関数は対象の AlierDB
のプロパティ schema
を更新します。
プロパティ schema
は、この関数の返す Promise
が履行されるまで、
データベース作成後のテーブル定義を与えるオブジェクトを与える Promise
に置き換えられます。
またこの関数の返す Promise
が履行された後は、作成済みのデータベースの定義オブジェクトに置き換えられます。
この関数の実装は DBConnector.createTable()
に依存します。