我正在尝试将Reddit/HackerNews样式的注释树作为项目的一部分来实现,并且我正在尝试将Firestore作为数据库解决方案.但是,我不确定通过文档正确的设计阅读.在SQL数据库中,我会使用数字键,如:
0
1.0
1.1
1.1.1
0.0
Run Code Online (Sandbox Code Playgroud)
代表我的树.但是,像这样的数字键似乎是Firebase反模式.另一条路线是在json中使用实际树,其中一个帖子表示如下:
{
uid: 'A0000',
content: 'foo',
children: [
{uid:..., content:..., children: []}]
}
Run Code Online (Sandbox Code Playgroud)
但据说在Firestore中,深树很糟糕.据我所知,深树不好的原因是你必须取出整个东西,但就我而言,我不确定这是不是一个问题.提取帖子的客户端将获取根内容节点和前20个子树.这可能是一个相当大的提取,但不是疯狂的.
有谁知道实现这种结构的良好标准方法?
额外:以下是客户端处理结构后应该看起来更详细的表达方式.
{
uid: 0,
title: 'Check out this cat!',
body: 'It\'s pretty cute! This **text** is [markdown](link), so it can have ' +
'links and *stuff*. Yay!',
poster: {
uid: 0,
name: 'VivaLaPanda',
aviUrl: 'badlink',
},
posted: '2018-03-28',
children: [{
uid: 0,
body: 'This is a comment, it\'s angry!',
poster: {
uid: 0,
name: 'VivaLaPanda',
aviUrl: 'badlink', …Run Code Online (Sandbox Code Playgroud)