Ultimate

X_CHANNEL_CATCHUP_POLICY_MISMATCH

Means

a channel's catch-up read decides with another policy

Typical cause

a channel('<name>', { catchUp, policy }) declaration names a catch-up query whose policy is not the channel's own policy object. The query is served at GET /_x/query/<catchUp> with the channel params as input, so a read with a wider policy (a bare can('<resource>:read') beside a channel rule comparing a param to the actor) hands any caller what the channel refuses

Fix

edit the catch-up query file the cause names: set its policy: to the same object the channel() call passes as policy: (export the rule from the feature's policy.ts and import it in both)

Listed under Realtime

This page as markdown