从 firebase 实时数据库获取数据到 react redux 时出现问题
Issue while getting data from firebase realtime database into react redux
我正在尝试从 firebase “实时数据库”.
获取数据
words:
0: {somedata},
2: {some data},
3: {some data},
4: {some data},
请注意,密钥 1 在 firebasse 上不存在。
这是数据在 firebase 中的显示方式
数据正确地到达了 redux reducer,就像它在 firebase 中预设的那样“没有键 #1”,但是在将它分派到状态之后,我得到了键 #1 的空对象,如下例所示.
words: [
0: {data here}
1: null
2: {data here}
3: {data here}
]
这是 redux 存储中数据的显示方式:
这里是减速器:
这里是日期在 reducer 上的显示方式:
我的问题是:为什么数据没有像下面的结构一样保存在 redux store 中:
words: [
0: {data here}
2: {data here}
3: {data here}
4: {data here}
]
当您在 Firebase 中存储数组时,它实际上存储为具有单独数字键的对象(因此数据中的 0: { ... }, 1: { ... }
)。
当从 Firebase 检索带有顺序数字键的数据时,它再次将其解释为数组。
因此,当您 store/retrieve 整个数组时,您的应用程序代码总是只看到该数组 - 而不是它作为常规对象存储的方式。
Firebase SDK 和 REST API 也会在缺少一些项目时将序列解释为数组。它“只是”将这些索引设置为 null
,如第二个代码段所示。
有关这方面的更多信息,请参阅经典博客 post:Best Practices: Arrays in Firebase。
当这种数组强制转换妨碍您时,最好的解决方案是不使用数组来存储数据。例如,我更喜欢用短字符串作为这些数字键的前缀,例如 "key0"
、"key2"
。这样 Firebase 就永远不会尝试将我的数据转换为数组。
我正在尝试从 firebase “实时数据库”.
获取数据words:
0: {somedata},
2: {some data},
3: {some data},
4: {some data},
请注意,密钥 1 在 firebasse 上不存在。
这是数据在 firebase 中的显示方式
数据正确地到达了 redux reducer,就像它在 firebase 中预设的那样“没有键 #1”,但是在将它分派到状态之后,我得到了键 #1 的空对象,如下例所示.
words: [
0: {data here}
1: null
2: {data here}
3: {data here}
]
这是 redux 存储中数据的显示方式:
这里是减速器:
这里是日期在 reducer 上的显示方式:
我的问题是:为什么数据没有像下面的结构一样保存在 redux store 中:
words: [
0: {data here}
2: {data here}
3: {data here}
4: {data here}
]
当您在 Firebase 中存储数组时,它实际上存储为具有单独数字键的对象(因此数据中的 0: { ... }, 1: { ... }
)。
当从 Firebase 检索带有顺序数字键的数据时,它再次将其解释为数组。
因此,当您 store/retrieve 整个数组时,您的应用程序代码总是只看到该数组 - 而不是它作为常规对象存储的方式。
Firebase SDK 和 REST API 也会在缺少一些项目时将序列解释为数组。它“只是”将这些索引设置为 null
,如第二个代码段所示。
有关这方面的更多信息,请参阅经典博客 post:Best Practices: Arrays in Firebase。
当这种数组强制转换妨碍您时,最好的解决方案是不使用数组来存储数据。例如,我更喜欢用短字符串作为这些数字键的前缀,例如 "key0"
、"key2"
。这样 Firebase 就永远不会尝试将我的数据转换为数组。