使用负时间戳以降序对firebase数据进行排序

jas*_*san 4 javascript firebase firebase-realtime-database

在此输入图像描述

上面是我的firebase数据库的屏幕截图.我正在尝试使用负时间戳按降序对firebase数据进行排序.我正在使用以下命令:

  const feedRef = database.ref('ducks')
  feedRef.orderByChild('timestamp').on('value', (snapshot, error) => {
    const feed = snapshot.val()})
Run Code Online (Sandbox Code Playgroud)

我继续按照与数据库相同的顺序获取Feed,而不是按照我想要的降序排列.我认为它不起作用,因为ducks端点没有子名称时间戳我将如何实现这一目标?推送生成的密钥是否有时间戳数据?

Fra*_*len 7

当您调用.val()快照时,它将转换为JSON对象.根据定义,JavaScript对象中的键是无序的(尽管许多实现将按字典顺序迭代键).

如果您在Firebase数据库上运行查询,则必须确保在按正确的顺序获取项目之前不要将其转换为JSON.在您的情况下,通过使用DataSnapshot.forEach():

const feedRef = database.ref('ducks')
var feed = [];
feedRef.orderByChild('timestamp').on('value', (snapshot, error) => {
    snapshot.forEach((duckSnap) => {
        const duck = duckSnap.val()
        console.log(duckSnap.key+'='+duck.name);
        feed.push(duck);
    });
});
console.log(feed);
Run Code Online (Sandbox Code Playgroud)