CREATE TABLE comments ( id INTEGER PRIMARY KEY AUTOINCREMENT, post_id TEXT NOT NULL, -- 不透明的文章标识符 parent_id INTEGER REFERENCES comments(id), -- NULL = 根评论 author TEXT NOT NULL, content TEXT NOT NULL, deleted INTEGER NOT NULL DEFAULT 0, deleted_at TEXT, created_at TEXT NOT NULL);
1 2 3 4 5 6 7 8 9 10
parent_id IS NULL = 根评论;parent_id IS NOT NULL = 回复。
操作指南:嵌套评论 API
本指南展示如何构建一级回复的评论系统:根评论可以接收回复,但回复不能再被回复(最大深度 = 1)。删除的评论使用墓碑处理,保留线程结构。
数据库结构
2
3
4
5
6
7
8
9
10
parent_id IS NULL= 根评论;parent_id IS NOT NULL= 回复。端点
POST/posts/{postId}/commentsGET/posts/{postId}/commentsGET/posts/{postId}/comments/{id}POST/posts/{postId}/comments/{id}/repliesDELETE/posts/{postId}/comments/{id}创建根评论
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
列出评论
2
3
4
5
6
7
8
9
10
11
12
13
14
评论限定在
post_id范围内。post-1的评论永远不会出现在post-2的列表中。获取单条评论
2
3
4
5
6
7
8
9
10
11
12
添加回复(最大深度 = 1)
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
深度检查实现
2
3
4
5
6
7
8
9
10
11
12
当
canReceiveReply()返回 false 时,返回 409。墓碑删除
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
墓碑处理保留了线程结构。即使父评论被删除,回复仍然可见。
2
3
4
5
6
7
墓碑 SQL
2
3
4
5
不应做的事
detail的 409 更好post_id限定