首页 > 解决方案 > 如何从 Firebase 获取随机孩子

问题描述

我有一个具有以下结构的 Firebase 数据库:

{
  "School" : {
    "Class A" : {
      "Student K" : [ "Language1", "Language2" ],
      "Student L" : [ "Language1", "Language2", "Language3 ],
    },
    "Class B" : {
      "Student M" : [ "Language1", "Language2" ],
      "Student N" : [ "Language1", "Language3 ],
      "Student O" : [ "Language1", "Language2", "Language3 ],
    },
  },
}

在这里,所有语言都是不同的,对于任何学生来说,它们都不相同。

我想从此数据库中检索一个随机的学生和语言对。我参考了Class节点。

我正在检索所有的孩子,School/Class然后将它们存储在地图中。要从中获取随机键值对,我只需遍历地图一次range即可获取任意对。

我的代码如下所示:

q := constants.GlobalClient.NewRef("School/" + className)
result := make(map[string][]string)
lang, studName := "", ""

if err := q.Get(constants.GlobalCtx, &result); err != nil {
    return nil, err
}

var allLang []string
for key, value := range result {
    studName = key
    allLang = value
    break
}

但是,这并没有提供我想要的随机性,所以我只想从数据库查询本身中检索一个随机的学生、语言对。

标签: firebasegofirebase-realtime-databaserandom

解决方案


推荐阅读