【问题标题】:firebase get key values from listfirebase 从列表中获取键值
【发布时间】:2017-12-06 18:48:06
【问题描述】:

在 /chat 上执行 subscribe 会返回:

[
  {
    "-L-bXjl628aN6MvCY7iA": {
      "content": "dsad",
      "img": "https://firebasestorage.googleapis.com/v0/b/neverl-fd59d.appspot.com/o/images%2F1512395563.jpg?alt=m...",
      "senderId": "TjRj5oSWrcdx8CiZyZhq625bJSx2",
      "senderName": "Khaled",
      "time": "December 5, 2017 6:38 PM"
    }
  }
]

对象返回正确,但是我无法获得值EwffbmmqgFc...。 (以黄色突出显示)

我应该如何修改代码以便能够通过列出数组内容来检索路径...?

代码如下:

 send(senderId:string,chatObject:any){  
   this.db.list(`users/${senderId}/chat/${this.authProvider.getUID()}`).push(chatObject);
 }

【问题讨论】:

    标签: typescript firebase firebase-realtime-database


    【解决方案1】:

    在实时数据库中,每个对象都有一个唯一的 ID。您的聊天节点由对象组成。在您的聊天对象中(以黄色突出显示),然后添加其他对象(可能是消息)我最好的猜测是您忽略了为您的聊天对象设置任何值/键,可能是因为您只是在将值设置为聊天对象本身。您应该首先使用名称和您选择的任何其他值创建一个聊天对象。一旦创建,您就可以将您的对象添加到该特定聊天引用。没有任何代码很难确定。

    【讨论】:

    • 没错,但是,我正在推送到 /userID,然后添加来自该特定用户的聊天...所以在一个 userId 下会有多个聊天(以黄色突出显示)。
    • 在推送到列表时用代码更新了问题,其中 senderId 是以黄色突出显示的 id。
    • 可能问题出在您的聊天对象上。我看到你的 sn-p 推送了 chatObject,但 db 屏幕截图显示了一组消息,这意味着你的 chatObject 只保存一组消息,而不是任何聊天信息
    • 是的,我通过从 firebase 返回一个 Object 而不是 Array 并执行 Object.keys(snap.val()) 来修复它,它返回一个键数组(在我的情况下我需要什么。) - 这是正确的方式?
    • 取决于用例,如果这是您需要的,而不是包含也可以使用的消息数组的聊天对象(带有信息)。祝你好运!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-10-25
    • 1970-01-01
    • 1970-01-01
    • 2012-01-19
    • 1970-01-01
    • 2021-11-09
    • 2014-10-03
    相关资源
    最近更新 更多