さまざまな責任を持つ複数の組織とユーザー向けの Firestore データ構造とルール

私は一般的に NoSQL と Firebase/Firestore にかなり慣れていないため (従来の SQL には強いバックグラウンドがあります)、データ構造オプションの基本のほとんどと、読み取り/書き込み権限などを管理するためのルールの作成方法を理解しています。 ., 私は、データ構造と、これから使用するクライアント側のルールの単純さに関して、「エレガントな」ソリューションを思いつくのに苦労しています.重要な側面は、ルールで get() 読み取りの必要性を排除しようとしているということです。これは、予算上の結果のために回避しようとしています...

eコマース関連のSaaSソリューションに取り組んでいます...

アプリには、これらの組織に関連付けられている個人のみが表示できるさまざまな民間の「組織」が含まれます。ソフトウェアには複数のユーザーがいて、それぞれが複数の組織へのさまざまなレベルのアクセス権を持っています。たとえば、人は、ある組織では「ユーザー」であり、別の組織では「管理者」である場合があります。各ユーザーは、「products.read」、「products.write」、「orders.read」、「order.write」など、構成可能な数の「役割」を持ちます。

すべてルート「組織」コレクションに分類される製品とコレクションの階層から始め、パターン「orgs」: ["12345"] で各ユーザーにカスタム クレームを添付しました...しかし、行き詰まっています。パーミッション/ロール側。 UID がキーであり、ユーザーが持つ可能性のあるすべての役割がこの ID の下にある組織のトップ レベルに「アクセス許可」または「アクセス」コレクションを追加できると信じていましたが、選択肢は 1 つしかありませんでした。物事のルール側のために。 get() メソッドを使用する必要がありますが、このメソッドを使用すると、別の読み取りがトリガーされるため、アクセス チェックごとに 2 倍の料金を支払う必要があります。

内部の get() を含まない回避策のアイデアはありますか?これはよくあるパターン/問題だと思いますが、Google で調べているうちに思いつかなかったので、連絡を取ることにしました :)

ここでデータベース トリガーを使用することをお勧めしますか? 「ステータス」列が変化するたびにトリガーを使用することを推奨する scaler topics の記事を見ました。これは適切な手順ですか?

どうもありがとうございます。

コメントを投稿

0 コメント