在firebase中存储空数组

Posted

技术标签:

【中文标题】在firebase中存储空数组【英文标题】:Storing empty arrays in firebase 【发布时间】:2018-07-05 20:04:42 【问题描述】:

我有我的 firebase 应用程序与 React 一起使用,我注册用户,然后将那里的信息记录到数据库中。我正在创建一个“约会应用程序”,我想要一些方法来存储空数组。例如,matchers: []

我尝试了类似的东西:

firebase.database().ref('users/' + userId).set(
      id: userId,
      username: name,
      email: email,
      matchers: [],
      likedUsers: [],
      disLikedUsers: []
    );

但后来读到,firebase 并没有真正处理数组,现在不知道该怎么做。我想要空数组,所以当用户开始使用应用程序时,他们可以添加到他们的各种数组中。

有什么想法吗?

【问题讨论】:

如果符合您的项目要求,您可以将数组存储在 FireStore 数据库中。我想您也可以将数组作为子集合存储在 FireStore 中。 @Kim 为 Kim 喝彩!这对我来说看起来不错 【参考方案1】:

您不需要创建这些字段,它们使用第一项进行初始化,推荐的索引集合方法是使用推送,然后将其映射到数组。

【讨论】:

但是当我创建一个用户时,我想将这些存储起来更容易阅读 它不存储空数组,您可以在开始时将其设置为 true,但您能告诉我您在开始时需要它的原因吗?【参考方案2】:

Firebase 一直建议不要使用数组。我不再重复原因,而是将您指向博客文章Best Practices: Arrays in Firebase。

但你更大的问题似乎是有 empty 数组:.如果某个属性没有值,则 Firebase 数据库不会存储该属性。这意味着空数组不会存储在数据库中,因此不会读回。

读回数据后,您必须自己重新创建这些属性。如果您对此有疑问,请更新您的问题以显示您是如何读取数据的。

【讨论】:

如果你想清空这些数组,这是一个超级问题。假设他有一些匹配项,但用户想要删除它们,他实际上不能清空对象,因为 firebase 不会接受具有空数组属性的更新。所以他必须完全建立一个删除操作。 我现在只是 JSON.stringifying 数组并在从数据库中获取时解析它们。

以上是关于在firebase中存储空数组的主要内容,如果未能解决你的问题,请参考以下文章

将 Firebase 数据库数组返回到另一个函数但返回空

在产品下显示视频数组 - 数据映射切片 javascript firebase 集合:数据显示为空数组 []

在本机反应中从数组上传数据到 Firebase 存储和 Firebase 数据库

我无法从 firebase 操作存储在数组中的数据

Firebase 网络将聊天存储为实时数据库中的数组

Flutter / Dart / Firebase - 流返回空列表