データベース上のデータがスクリプトに渡された場合や、逆にスクリプトからデータベースへ書き込む場合には、次のような対応によって相互に変換されます。
表 9. 項目の型とJavaScriptの型との対応
| 項目の型 | JavaScriptの型 | 備考 |
|---|---|---|
| 文字列型(一行)、文字列型(複数行)、外部キー、自動生成文字列、タイムスタンプ | String | |
| 真理値型 | bool | |
| 小さな整数型 | int | |
| 浮動小数点数型 | double | |
| 整数型 | Integer | |
| 有理数型、n進数型 | Rational | |
| バイナリ型 | Binary | |
| 単位型 | void | |
| レコード、選択 | ObjectのArray | 配列の長さは常に1で、その要素がObject、そのプロパティにレコードの子項目 |
| テーブル | ObjectのArray | 配列の各要素がObject、そのプロパティにテーブルの子項目 |
複合型は常にObjectの配列に変換されます。その配列の各要素であるObjectにはその複合型の子項目の名前と同じプロパティが付き、そのプロパティに子項目のデータがセットされます。
例えば、あるテーブル型に文字列型(一行)の子項目「名前」と小さな整数型の子項目「年齢」があったとします。そして変数xにそのテーブルから5行のレコードを取得した結果がセットされているとします。そのときx[2]["名前"]には3番目のレコードの「名前」の値がセットされています。またx[0]["年齢"]には最初のレコードの「年齢」の値がセットされています。
別の例としてたとえば、ある選択型に単位型の子項目「既定」と文字列型の子項目「その他」があったとします。そして変数yにその選択型のデータを取得した結果がセットされているとします。そのデータが選択肢「その他」のほうを選択していて、その値が「abc」だったとすると、y[0]["その他"]の値は"abc"となり、選択されていない選択肢であるy[0]["既定"]はundefinedとなります。レコード型や選択型から変換された配列の長さは常に1のため、y.lengthは1になります。