如何在Firebase中构建数据

时间:2018-07-05 10:42:13

标签: firebase firebase-realtime-database

我是Firebase的数据结构的新手。

我读了这个:https://firebase.google.com/docs/database/ios/structure-data

我知道有必要使用扁平化的结构。

但是我不确定如何在现实世界中做到这一点。

我认为要正确使用Firebase rules,我需要一个合适的结构(但我对此没有经验)。

我有2种数据类型:

零件列表:

parts: {
  part1: {
    chapter1: {
      lesson1,
      lesson2,
      ...etc
    },
     chapter2: {
      lesson1,
      lesson2,
      ...etc
    },
     chapterX: {
      ...etc
    },
  },
  part2: {
    chapter1: {
      lesson1,
      lesson2,
      ...etc
    },
     chapterX: {
      ...etc
    },
  },
  partX: {
    ...etc
  }
}

以及用户列表:

users: {
  user1: {
    name,
    email,
    ...etc
  },
  user2: {
    name,
    email,
    ...etc
  },
  user3: {
    ...etc
  },
  etc...
}
  • 每个用户都可以验证课程,并且必须保存课程进度。
  • 如果用户验证了所有课程:他将验证该章。
  • 如果他验证所有章节,他将验证零件。

我正在考虑像这样构建Firebase数据库:

{
  users: {
    $uid: {
      name,
      email,
      ...
    }
  },
  checked: {
    user1: {
      parts: {
        part1: true
      },
      chapters: {
        chapter1: true,
        chapter2: true
      },
      lessons: {
        lesson1: true,
        lesson7: true,
        lesson15: true,
      }
    },
    user2: {
      parts: {
        part3: true
      },
      chapters: {
        chapter1: true
      },
      lessons: {
        lesson18: true,
        lesson57: true,
      }
    }
  }
}

对于Firebase rules

{
  "rules": {
    "users": {
      "$uid": {
        ".write": "$uid === auth.uid"
      }
    },
    "checked": {
      "$uid": {
        ".write": "$uid === auth.uid"
      }
    }
  }
}

这是正确的方法吗?

rules可以吗?

谢谢!

1 个答案:

答案 0 :(得分:2)

根据您提供的信息,您在做正确的事情。规则还可以。数据库的结构适合您想要读取它们的方式,因此您在做正确的事情。