当前位置: 首页 > 知识库问答 >
问题:

使用Firebase控制台在Firebase中设置数组

巩衡
2023-03-14

共有1个答案

闻人越
2023-03-14

Firebase数据库不存储数组。它存储字典/关联数组。所以你能得到的最接近的结果是:

attendees: {
  0: "Bill Gates",
  1: "Larry Page",
  2: "James Tamplin"
}

您可以在Firebase控制台中构建此结构。然后当您使用其中一个Firebase SDK读取它时,它将被转换为一个数组。

firebase.database().ref('attendees').once('value', function(snapshot) {
  console.log(snapshot.val());
  // ["Bill Gates", "Larry Page", "James Tamplin"]
});

所以这可能就是你想要的结果。但我建议阅读这篇关于如果不存储数组,为什么Firebase更喜欢它的博文:https://Firebase.googleblog.com/2014/04/best-practices-arrays-in-firebase.html。

attendees: {
  0: "Bill Gates",
  1: "Larry Page",
  2: "James Tamplin",
  3: "Bill Gates"
}

如果不是,在添加他之前,您必须检查他是否已经在数组中。

if (!attendees.contains("Bill Gates")) {
  attendees.push("Bill Gates");
}

这是一个明显的迹象,表明您的数据结构对于用例来说是次优的。在添加新子项之前必须检查所有现有子项将限制可伸缩性。

在这种情况下,您真正想要的是一个集合:一个数据结构,其中每个子级只能出现一次。在Firebase中,您可以像这样建模集:

attendees: {
  "Bill Gates": true,
  "Larry Page": true,
  "James Tamplin": true
}
attendees["Bill Gates"] = true;

因此,数据结构隐式地解决了唯一性需求,而不是为唯一性需求进行编码。

 类似资料:
  • 我看到这已经讨论过了,但我想知道它是否有所改变。 在控制台中,我添加click_action作为键,OPEN_ACTIVITY作为值。但是当我点击通知时,它仍然不去那个类。 我在其他地方遗漏了任何代码吗?谢谢

  • 我最近在我的应用程序中安装了Firebase pods,因为我希望现在能够检查用户并允许用户注册。 但是,这是控制台中的内容: 2016-09-27 22:45:50.248 样本应用[68417:] 火垒分析 v.3402000 开始 2016-09-27 22:45:50.260785 样本应用[68417:3132777] 子系统: com.apple.libsqlite3, 分类: 日志记

  • 我已经试着调试Firebase推送通知相当长时间了,但没有得到任何运气。我相信我已经正确地设置了临时配置文件和APNs证书。当我不包含方法时 当应用程序从Firebase通知控制台发送时,它会在前台接收通知,因为它会被打印出来,但它不会在后台接收通知。

  • 我可以成功地从家里的服务器向Firebase服务器发送帖子请求。消息被毫无问题地传递到客户端。除了应用程序必须运行或在后台。如果应用程序被关闭,消息就会被搁置。系统托盘里什么都没有,没有声音,什么都没有。这是预期的行为吗? 这是我正在使用的curl命令: curl-X POST--header“Authorization:key=AIzaSyBntseBqux9nBX8y”--header“Con

  • 我最近不得不迁移我的应用程序,复制并粘贴了一大堆代码。现在,当我构建项目时,我会在控制台中获得通常的firebase输出,但这次它是重复的。有谁知道可能导致这种情况的原因。代码太多,我无法完成

  • 我试图定制firebase的电子邮件验证模板,这样当用户订阅时,电子邮件验证就会发送给他,当他点击验证链接时,应用程序就会打开,并处理验证过程的结束。我正在为我的后端使用firebase。因此,当我通过以下方式更改默认验证URL时: