トリガーを使用して、カート内のアイテムに対して発生する書き込みイベント(作成、更新、削除)をリッスンします。関数は、カート内のすべての商品を読み取り、合計数量と価格を合計してから、「cart」を更新します。フロントエンドは、カートの変更に関する最新情報を受け取るよう登録されています。更新すると、リアルタイムで更新されます。エミュレータを使用して完全にローカルでテストする、完全にローカルなアプリを設定しました。次のセクションでは、次の内容を学習します。エミュレータを使用する単体テストを作成する方法。ルールをデバッグする方法。ルールを作成ウェブアプリはデータを読み書きしますが、これまでセキュリティについては特に心配していませんでした。ルール」と呼ばれるシステムを使用して、データの読み取りと書き込みにアクセスできるユーザーを宣言します。これらのルールのプロトタイプを作成するための優れた方法です。つの主要なセクションがあります。}}現在、誰でも当社のデータベースに対してデータを読み書きできます。有効なオペレーションのみが実行され、機密情報が漏洩しないようにするためです。最小権限の原則に従い、すべてのドキュメントをロックダウンし、すべてのユーザーが必要なアクセス権をすべて(それ以上は)持つまで、アクセス権を段階的に追加します。ステートメントがない場合はどうなりますか?ルールはデフォルトで拒否します。ルールファイルで定義されたルールのいずれにもオペレーションが一致しない場合、アクセスは拒否されます。ロックモード(本番環境モード)では、すべてのドキュメントに一致してすべてのアクセスが拒否されるため、暗黙的な拒否が明示的な拒否になります。表示されていることを確認します。前の手順で実行したエミュレータがまだ実行されている可能性があります。実行されていない場合は、エミュレータを再起動します。--import=./seedエミュレータを実行したら、エミュレータに対してローカルでテストを実行できます。残りの部分ではこのディレクトリを使用します)。テストを実行し、出力の一番上までスクロールします。ルールファイルを作成する際に、より多くのテストに合格するのを監視することで進行状況を測定できます。カート」次のことを確認します。});これらのテストに合格するようにしましょう。内のステートメントを更新します。}}カートの所有者には、これらのルールによる読み取りと書き込みのアクセスのみが許可されます。つのオブジェクトを使用します。オブジェクトには、試行されているオペレーションに関するデータとメタデータが含まれます。オブジェクトはリクエストを行っているユーザーを記述します。ドキュメントを表します。ドキュメントを表します。提案されたドキュメントが含まれます。保存されると自動的にルールを更新します。件のテストが合格したことを確認します。カートへの安全なアクセスが可能になりました。次の失敗したテストを見てみましょう。フローをチェックします。現在のところ、カート所有者はカートの読み取りと書き込みを行うことができますが、カート内の個々のアイテムの読み取りと書き込みを行うことはできません。ドキュメントにはアクセスできますが、カートのアイテムのサブコレクションにはアクセスできないためです。ルールはサブコレクションにカスケードされないデフォルトでは、ドキュメントのルールはサブコレクション内のドキュメントにカスケードされません。サブコレクション内のドキュメントに対して、若干異なるルールが必要になるのが一般的です。ようにすべてのドキュメントを再帰的に照合できます(この処理は慎重に行ってください)。これはユーザーにとって不具合のある状態です。戻り、カートに何かを追加してみます。エラーが表示されます。つのテストでは、ユーザーがカートへの商品の追加とカートからのアイテムの読み取りのみを行えることを確認します。同じ場合にアクセスを許可するルールを作成できます。ルールを使用できます。このルールは、データを変更するすべてのリクエストに適用されます。サブコレクション内のドキュメントのルールを更新します。