【发布时间】:2018-06-27 16:20:09
【问题描述】:
我正在使用 firebase 制作聊天应用程序。我偶然发现了一个小问题。 当向 firebase 数据库发出请求时,firebase 将返回一个 JSON 或 JS 对象(我是新手,所以我真的不知道)。
这是我的数据库的结构:
消息树下的第一个 ID 是我在 cidst 连接到应用程序时获得的客户端 ID。下面的 id 是与记录的客户聊天的客户 ID,下面的 ID 是 firebase 为每条消息生成的 ID。
使用此代码(见下文),我正在侦听数据库以查看是否已添加任何消息以用于通知目的。
var ref = database.ref('messages/81k44hlET5cq2AorxLDxD1DeXV52/');
ref.on('value', gotData, errData);
function gotData(data) {
var msgs = data.val();
var keys = Object.keys(msgs);
console.log(msgs);
messages = new Array();
timestamp = new Array();
type = new Array();
for(var keys in msgs) {
if (msgs.hasOwnProperty(keys)) {
console.log(keys + " -> " + msgs[keys]);
messages.push(msgs[keys]);
}
}
}
代码的输出:
我得到一个包含两个对象的数组。直到这里一切正常。
我的问题是我无法弄清楚如何使用 JavaScript 从这里获取我的消息属性,因为消息 ID 是未知的。
我的意思是,例如,由于 ID 未知,我无法访问执行 msgs[keys].id.message 的属性。
【问题讨论】:
-
那么你想在你的 JS 中使用 fb 对象吗
-
而不是
console.log(keys + " -> " + msgs[keys]);这样做console.log(keys , " -> " , msgs[keys]); -
我正在尝试从对象中获取 msg 属性(消息、时间戳...)
-
@Prashant 我现在就试试(我也是 js 新手)
-
好的,感谢@Prashant,我知道了,我将代码更新为此,现在可以访问我的消息属性。谢谢! if (msgs.hasOwnProperty(keys)) { console.log(keys , " -> " , msgs[keys]);消息.push(msgs[keys]); var k = msgs[键]; for(var keys in k){ console.log(k[keys]); }
标签: javascript arrays json firebase