在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中存储空数组的主要内容,如果未能解决你的问题,请参考以下文章
在产品下显示视频数组 - 数据映射切片 javascript firebase 集合:数据显示为空数组 []