使用相反的键对Firebase进行排序

时间:2018-07-04 07:13:13

标签: javascript firebase firebase-realtime-database

我正在尝试使用密钥对我的数据从最新到最旧进行排序。我的第一个选择是以相反的顺序使用唯一键(最新显示在最前面),因此首先我使用负的timeStamp作为键。但是firebase中的键是字符串,因此无法使用。这就是为什么我决定在Firebase中使用[9999999999999 - date.now()]作为键并且它可以工作的原因(反向渲染)。使用这种方法安全吗?为什么使用child是对数据进行排序的最佳方法?为什么不按键?

firebase.database().ref('saved_phrases')
    .child(firebase.auth().currentUser.uid)
    .child([9999999999999-Date.now()]).set(
      "phrase"
    )

1 个答案:

答案 0 :(得分:2)

创建自己的密钥是完全有效的,只要您的应用保证这些密钥是唯一的即可。因此,如果您应用程序中的用户每毫秒只能创建一个保存的短语(Date.now()的粒度),那么您应该没有机会多次获得相同的密钥。但是,只有在可以保证这些键将唯一的情况下,才应使用这些键-不仅在现在,而且在应用程序的未来。

如果您还不确定,请考虑将时间戳存储为属性,将反向时间戳存储为另一个属性,然后使用orderByChild()来获取所需的行为。