You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: config/.claude/skills/no-sql-web-sdk/SKILL.md
+6Lines changed: 6 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -46,6 +46,7 @@ Keep local `references/...` paths for files that ship with the current skill dir
46
46
- Querying before the user is signed in when the collection rules require identity.
47
47
- Using `wx.cloud.database()` or Node SDK patterns in browser code.
48
48
- Initializing CloudBase lazily with dynamic imports instead of a shared synchronous app instance.
49
+
- For realtime UI, assuming the listener is ready immediately after calling `watch()`. Treat the first `onChange` snapshot whose `docChanges` contain `dataType: 'init'` as the initial data ready signal before rendering room state, enabling actions, or concluding that the query returned no rows.
49
50
- Treating security rules as result filters rather than request validators.
50
51
- For CMS-style collections that need **app-level admin users** to edit/delete all records while editors can only edit/delete their own records, do not oversimplify the rule to `READONLY`. A validated pattern is a `CUSTOM` rule that reads role from `user_roles` by `auth.uid` and combines it with `doc.authorId == auth.uid`, while frontend writes can stay on `.doc(id).update()` / `.doc(id).remove()`.
51
52
- Forgetting pagination or indexes for larger collections.
@@ -119,6 +120,11 @@ Important rules:
119
120
- Database errors must become readable UI or application errors, not silent failures.
120
121
- For writes, do not treat a resolved promise as success by default. Check write result fields such as `updated` / `deleted` or surfaced `code` / `message`.
121
122
123
+
5.**Handle realtime initialization explicitly**
124
+
-`.watch()` becomes usable only after the first `onChange` snapshot arrives.
125
+
- Use the snapshot whose `docChanges` include `dataType: 'init'` as the canonical "initial data is ready" event.
126
+
- Until that event arrives, keep loading state explicit and avoid enabling turn-based actions that depend on the queried documents.
0 commit comments