我正在尝试使用密钥对我的数据从最新到最旧进行排序。我的第一个选择是以相反的顺序使用唯一键(最新显示在最前面),因此首先我使用负的timeStamp作为键。但是firebase中的键是字符串,因此无法使用。这就是为什么我决定在Firebase中使用[9999999999999 - date.now()]
作为键并且它可以工作的原因(反向渲染)。使用这种方法安全吗?为什么使用child是对数据进行排序的最佳方法?为什么不按键?
firebase.database().ref('saved_phrases')
.child(firebase.auth().currentUser.uid)
.child([9999999999999-Date.now()]).set(
"phrase"
)
答案 0 :(得分:2)
创建自己的密钥是完全有效的,只要您的应用保证这些密钥是唯一的即可。因此,如果您应用程序中的用户每毫秒只能创建一个保存的短语(Date.now()
的粒度),那么您应该没有机会多次获得相同的密钥。但是,只有在可以保证这些键将唯一的情况下,才应使用这些键-不仅在现在,而且在应用程序的未来。
如果您还不确定,请考虑将时间戳存储为属性,将反向时间戳存储为另一个属性,然后使用orderByChild()
来获取所需的行为。