Javascript 按相反顺序使用键进行Firebase排序

Javascript 按相反顺序使用键进行Firebase排序,javascript,firebase,firebase-realtime-database,Javascript,Firebase,Firebase Realtime Database,我正在尝试使用键对数据从最新到最旧进行排序。我的第一个选择是以相反的顺序使用唯一的键(最新的将在顶部),所以首先我使用负时间戳作为键。但firebase中的键是字符串,因此无法工作。这就是为什么我决定使用[999999999999-date.now()]作为firebase中的键,它可以工作(反向渲染)。使用这种方法安全吗?为什么使用child是对数据排序的最佳方式?为什么不是钥匙 firebase.database().ref('saved_phrases') .child(fireb

我正在尝试使用键对数据从最新到最旧进行排序。我的第一个选择是以相反的顺序使用唯一的键(最新的将在顶部),所以首先我使用负时间戳作为键。但firebase中的键是字符串,因此无法工作。这就是为什么我决定使用
[999999999999-date.now()]
作为firebase中的键,它可以工作(反向渲染)。使用这种方法安全吗?为什么使用child是对数据排序的最佳方式?为什么不是钥匙

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

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


如果您不完全确定这一点,考虑将时间戳存储为属性,逆时间戳作为另一个属性,然后使用<代码> OrthByStudio()/代码>来获得您需要的行为。

创建您自己的密钥是完全有效的,只要应用程序保证这些密钥是唯一的。因此,如果应用程序中的用户每毫秒只能创建一个保存的短语(粒度为

Date.now()
),那么您就不可能多次获得相同的密钥。但只有在你能保证这些密钥是唯一的情况下,你才应该使用这些密钥——不仅是现在,也是为了你的应用程序的未来


如果您不完全确定这一点,请考虑将时间戳存储为属性,逆时间戳作为另一个属性,然后使用<代码> OrthByCub()/<代码>来获得您需要的行为。按相反顺序按键的确切含义是什么?更重要的是,您为什么要这样做?此外,使用键进行排序可能不是最好的主意-最好将时间戳存储为子节点并按其排序。如果你先存储一个+子节点,然后存储一个-子节点,你可以随时读取它们的升序或降序;按相反顺序按键的确切含义是什么?更重要的是,您为什么要这样做?此外,使用键进行排序可能不是最好的主意-最好将时间戳存储为子节点并按其排序。如果先存储+子节点,然后存储-子节点,则可以随时升序或降序读取它们。