我几乎到处都在阅读有关构建Firebase Database
以进行有效查询的内容,但我仍然对两种替代方案感到困惑。
例如,让我们说我希望得到所有用户" maxBenchPressSessions"从过去7天左右开始。
我在这两种结构之间挑选:
在第一个数组中,我使用用户的id作为属性来索引是真还是假。在第二个中,我使用userId
作为属性NAME,其值将是用户的ID。
一个比另一个更快,还是会以相对相同的方式编入索引?我对数据库设计有点新意,所以我想确保我遵循正确的做法。
进步
我提出了一个解决方案,它既可以展平我的数据库又允许我仅使用ListenerForSingleValueEvent
添加orderBy
一次,但仅当我想检查用户是否保存了会话时特定的一天。
我可以让每个maxBenchPressSession
对象都有userId_dateString
格式的密钥。但是,如果我想获得过去7天内所有用户的会话,我不知道如何在一个查询中完成该操作。
有什么想法吗?
答案 0 :(得分:1)
我建议观看视频。它很好地讲述了数据的结构。
答案 1 :(得分:0)
据我了解firebase的原理,有效地使用它。应该尽可能小地查询数据,并且无论有多少请求都无关紧要。
但你会接受这样的要求。我们必须在数据库“negativeDate”中添加另一个字段。
此字段允许您获取最后七个条目。这是一个视频 - https://www.youtube.com/watch?v=nMR_JPfL4qg&feature=youtu.be&t=4m36s
const ref = firebase.database().ref('maxBenchPressSession');
ref.orderByChild('negativeDate').limitToLast(7).on('value', function(snap){ })
请求示例:
int main()
{
initialize();
//rest of your code
}//end of main
答案 2 :(得分:0)