データの読み取りと書き込み
クエリーでデータを取得し、コンポーネントで使用することができます
**クエリーを使用すると、コンポーネントで様々なソースからデータの読み取りや書き込みができます。**Retoolでは、ほとんどのデータベースに対するクエリー、およびすべてのAPIに対するクエリーがサポートされています。
コンポーネントはプロパティを介してクエリーに結び付けられます。例えば、Table
のデータを{{query1.data}}
になるように設定することで、テーブルにquery1
からのデータを表示できます。同様に、{{resetPassword}}
関数をトリガーするようにButton
のonClick
を変更しAPIリクエストを実行できます。
概要
データを変更しないクエリー(例えば、読み取り専用のSQL文、またはGET
APIリクエスト)は、ページのロード時に自動的に実行され.data
フィールドにデータが入力されます。このフィールドには、queryName.data
を介してアクセスできます。パラメーターが変更されると(例えば、select * from users where id = {{textinput1.value}}
)、読み取り専用クエリーが自動的に再実行されます。
データを変更するクエリーは、明示的に指示した場合のみ実行されます。例えば、usersのテーブルがあり、選択したユーザーのパスワードをリセットするPOST
リクエストがある場合、行を変更しても、そのPOST
クエリーは自動的には実行されません。このような場合は、POST
リクエストと他の書き込みリクエストを明示的に実行する必要があり、そのためには、一般的にはButton
を使用します。そうすることで、誤ってデータを書き戻すことがなくなります。
クエリーの実行とリフレッシュのタイミング
データを読み取るクエリー(SQL文、およびGET
APIクエリー)は、パラメーターが変更されると自動的にリフレッシュされます。例えば、以下のクエリーは、textinput.value
が変更されるたびに自動的に更新されます。
select * from users where customer_id = {{textinput.value}}
データを書き込むクエリーは、パラメーターが変更されても自動的には実行されません
データを書き込むクエリー(GUIエディターによるSQLアクション、および
GET
以外のその他すべてのHTTPメソッド)は、それらのパラメーターが変更されても自動的にはリフレッシュされません。それらが変更されるようにしたい場合は、クエリーの上部にあるドロップダウンで「Run query automatically when inputs change」を選択します。しかし、必要になる可能性は低いでしょう。クエリーで
TextInput
から値を取得する場合には、TextInput
へのキー入力のたびにそのクエリーが1回コールされるためです。それにより、データベースに、m
、ma
、mar
、mary
の複数の行が挿入されることになります。POST
をトリガーするボタンを追加することをお勧めします。
その他のオプション
成功時または失敗時のクエリーのトリガー
多くの場合、1つのクエリーの終了後にさらにクエリーをトリガーする必要があります。例えば、データベース・テーブル内の何かを変更した後に、すべてのユーザーを取得するusers
クエリーをリフレッシュする必要がある場合は、updateUsername
によってusers
クエリーがリフレッシュされる必要があります。
そのためには、「queries to refresh」に追加するだけです。

updateEmail
の成功後にusers
をリフレッシュします
実行前の確認要求
パラメーターが変更されたときや、クエリーをトリガーしたときに、クエリーを自動実行したくない場合は、実行前に確認を求めることができます。クエリーの実行前に、モーダル・ウィンドウがポップアップ表示され、本当にクエリーを実行するかどうかを尋ねるメッセージが示されます(メッセージは動的に変更される可能性があります)。

ユーザー削除クエリーの実行前に確認メッセージを表示
クエリーの定期実行
Retoolでは、ユーザーが指定した期間にクエリーを定期実行するメカニズムが用意されています。以下に、この例を示します。

5秒(5000ミリ秒)ごとにクエリーをリフレッシュする例
クエリーの動的な無効化
多数のクエリーがある複雑なページでは、すぐにクエリーが必要でない場合にクエリーの実行を停止すると便利な場合があります。例えば、タブ付きコンテナーを使用している場合に、ユーザーがアクティブなタブから2つ目のタブに切り替えたときにのみクエリーの実行が必要になることがあります。これを行うには、以下のように記述します。

2つ目のタブがアクティブになったときにのみクエリーを実行する
監査ログにパラメーターが表示されないようにする
実行したすべてのクエリーは監査ログに記録されます。機密性の高いパラメーター(例えば、APIキー)がある場合は、記録しないようにする必要があります。そのために必要なのは、そのパラメーターを「drop from audit logs」ドロップダウンに追加することだけです。

textinput1.value
の値をブラックリストに追加します
クエリーの頻度調整
Retoolのパフォーマンスが低速である場合は、クエリーのリフレッシュ頻度が多過ぎる可能性があります(例えば、キー入力のたび)。これを解決するには、実行頻度が少なくなるようにクエリーを調整します。デフォルトは750ms
です。
クエリーのタイムアウト
クエリーが無限に実行されることがないようにしたい場合は、クエリーのタイムアウトを設定できます。デフォルトのタイムアウトは10000ms
です。
Updated 30 days ago