Skip to content

Commit 6ea1cf4

Browse files
author
CodeBuddy Attribution Bot
committed
fix(attribution): 实时监听 API 缺乏初始数据就绪通知机制 (issue_mnrzm5ru_70sm9m)
1 parent 65c585d commit 6ea1cf4

1 file changed

Lines changed: 6 additions & 0 deletions

File tree

  • config/source/skills/no-sql-web-sdk

config/source/skills/no-sql-web-sdk/SKILL.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@ Keep local `references/...` paths for files that ship with the current skill dir
4646
- Querying before the user is signed in when the collection rules require identity.
4747
- Using `wx.cloud.database()` or Node SDK patterns in browser code.
4848
- 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.
4950
- Treating security rules as result filters rather than request validators.
5051
- 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()`.
5152
- Forgetting pagination or indexes for larger collections.
@@ -119,6 +120,11 @@ Important rules:
119120
- Database errors must become readable UI or application errors, not silent failures.
120121
- For writes, do not treat a resolved promise as success by default. Check write result fields such as `updated` / `deleted` or surfaced `code` / `message`.
121122

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.
127+
122128
## Quick examples
123129

124130
### Simple query

0 commit comments

Comments
 (0)