You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Firestore数据库中设计用户答题历史存储结构?

Firestore用户答题记录存储方案

根据你的需求,这里提供两种贴合现有结构的存储方案,完美关联题ID和答题记录串:

方案一:单题单文档(仅保留最新答题记录)

沿用你书签的设计思路,在用户的USER_DATA下新增QUESTION_HISTORY集合,用题目ID作为文档ID,文档内存储答题记录串及其他辅助字段。

  • 路径结构:/USERS/[用户ID]/USER_DATA/QUESTION_HISTORY/[题ID]
  • 文档示例:
{
  "answerRecord": "WRWRR",
  "lastAttemptTime": "2024-05-20T14:30:00Z"
}
  • 优势:
    • 题ID与文档ID直接绑定,无需额外关联字段,查询某题记录时直接通过题ID定位文档
    • 结构和书签完全统一,维护成本低
    • 更新答题记录时直接覆盖文档即可,操作简单

方案二:多记录多文档(保留所有答题历史)

如果需要保存用户同一题的多次尝试记录,可将文档ID设为Firestore自动生成的ID,文档内显式存储questionId和答题记录串。

  • 路径结构:/USERS/[用户ID]/USER_DATA/QUESTION_HISTORY/[自动生成文档ID]
  • 文档示例:
{
  "questionId": "3s3NEa3lb9jbp2PWAthc",
  "answerRecord": "WRWRR",
  "attemptTime": "2024-05-20T14:30:00Z"
}
  • 优势:
    • 完整保留用户每一次答题记录,支持回溯历史
    • 可通过questionId过滤查询某题的所有尝试,结合attemptTime排序查看答题趋势
    • 扩展灵活,后续可新增score、duration等字段记录更多答题细节

实现建议

  • 如果只需要跟踪用户每道题的最新答题状态,优先选方案一,和现有书签结构对齐,代码逻辑更统一
  • 如果需要分析用户答题习惯、记录多次尝试的变化,选方案二,牺牲一点查询效率换更完整的数据维度

内容的提问来源于stack exchange,提问作者Θεοφανης Γιαννακοπουλος

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 12:14:56