フォームでのデータベース
フィールドの dbConfig がデータベースを指定する方法と、古いフォームの互換性
データベースの指定
query を持つフィールドは、 dbConfig が指定するデータベースでそのクエリを実行します。
- name: datacenter
type: enum
dbConfig: cmdb # a database of Connections > Databases
query: select name from cmdb.datacenter
7.5.0 からは、名前は次の順序で検索されます。
| 順序 | 名前が指すもの | クエリの接続に使うもの |
|---|---|---|
| 1 | 接続 > データベース のデータベース | そのデータベースが指定する認証情報 |
| 2 | それ以外は 接続 > 認証情報 にある種類が データベース の認証情報 | その認証情報。7.5.0 より前と同じ |
データベースの種類(MySQL、MSSQL、PostgreSQL、Oracle、MongoDB)は認証情報から取得されるので、フォームで指定することはありません。 種類のない認証情報は MySQL として読み込まれます。
7.5.0 より前に書かれたフォーム
dbConfig で認証情報を指定していたフォームは、すべて変更なしで動作し続けます。
7.5.0 へのアップグレード は、データベースの認証情報ごとに同じ名前でその認証情報で接続するデータベースを 作るので、フォームが指定する名前はまずデータベースを見つけ、同じログインにたどり着きます。同じ名前のデータベースがない種類がデータベースの 認証情報は、引き続き手順 2 で見つかります。
アップグレードが行うように、データベースと認証情報は同じ名前を共有できます。その場合はデータベースが優先されます。データベースを別の 認証情報に向けると、その名前を指定するすべてのフォームがそれに従います。これにより、フォームを編集せずに別のサーバーへ移せます。
dbConfig の形式
dbConfig がこれまで受け付けてきた三つの形式は引き続き動作し、それぞれの名前は上記のとおり検索されます。
dbConfig | 例 | 動作 |
|---|---|---|
| 名前 | dbConfig: cmdb | そのデータベースを照会します |
| 名前のリスト | dbConfig: [cmdb-eu, cmdb-us] | それぞれでクエリを実行し、結果を結合します。重複は削除されません |
| オブジェクト(レガシー) | dbConfig: { name: cmdb, type: mysql } | データベースまたは認証情報 name を照会します。非推奨です。名前だけを使ってください |
dbConfig: secret:vault:secret/cmdb/db のような シークレットストア の参照は、 データベースの名前でも認証情報の名前でもないので、これまでどおりストアから読み込まれます。
データベースを照会するフォーム
アプリはフォームを読み取り、どのフォームが各データベースを照会しているかを判断します。
データベースページ の 使用元 列はそれらを数え、 データベースのページ の 使用元 タブは それらをフィールドとともに一覧表示します。データベースの代わりにその認証情報を指定しているフィールドも数えられます。データベースの名前は、 古い名前を指定しているフォームを変更してから変更してください。