Javascript 如何读取firebase for js应用程序中的最后一条消息节点?

Javascript 如何读取firebase for js应用程序中的最后一条消息节点?,javascript,firebase,firebase-realtime-database,Javascript,Firebase,Firebase Realtime Database,我想读取最后一个消息节点,如下图所示 我使用下面的查询来检索已知suid和id的最后一条消息(如img所示)。但不起作用 firebase.database().ref("Messages/"+suid).child(ids+"/chat").orderByKey().limitToLast(1); 如何从firebase realtime db检索最后一条消息并将其显示到我的控制台?谢谢您现有的代码看起来不错,所以让我们先将该查询存储在变量中: co

我想读取最后一个消息节点,如下图所示

我使用下面的查询来检索已知suid和id的最后一条消息(如img所示)。但不起作用

firebase.database().ref("Messages/"+suid).child(ids+"/chat").orderByKey().limitToLast(1);

如何从firebase realtime db检索最后一条消息并将其显示到我的控制台?谢谢

您现有的代码看起来不错,所以让我们先将该查询存储在变量中:

const query = firebase.database().ref("Messages/"+suid).child(ids+"/chat").orderByKey().limitToLast(1);
现在,您可以阅读此查询与
once()
get()
匹配的消息。我将使用
once()
,因为它更古老,因此您更可能在其他地方找到它的示例:

query.once("value").then((snapshot) => {
  snapshot.forEach((message) => {
    console.log(message.val().message.msg);
  });
})
这里需要注意的是:

  • 由于查询可能有多个结果,因此快照包含这些结果的列表。即使只有一个结果(如此处所示),快照也是一个结果列表。为了循环这些结果,我们使用
    snapshot.forEach()
  • 您的
    msg
    嵌套在每个子项的
    message
    下,因此我们使用
    message.val().message.msg
    获取其值

它可以工作。谢谢