gpt4 book ai didi

javascript - 在 Firebase 中通过键查找对象

转载 作者:行者123 更新时间:2023-12-03 06:39:28 25 4
gpt4 key购买 nike

我在我的应用程序中使用以下数据结构:

var users = {
"tom": { conversations: ["fake-uuid-v4"] },
"bob": { conversations: ["fake-uuid-v4"] }
};

var conversations = {
"fake-uuid-v4": {
user_one: "tom",
user_two: "bob"
}
}

每个用户都有一个映射到对话的键集合,其中包含对话的数据,例如发送的最后一条消息、用户是否正在键入等。问题是我很难查找对话。

这是我尝试过的方法,但没有产生任何结果。 (注意:我的 Firebase 应用程序中现在有这些确切的数据,因此从技术上讲,这是一个可运行的示例)

var conversation_id = 'fake-uuid-v4';
firebase.database().ref('/conversations')
.startAt(conversation_id)
.endAt(conversation_id)
.on('child_added', function(snapshot, prevKey) {
if(snapshot.val()) console.log(snapshot);
});

但是,如果我将代码更改为

,它不会从数据库中提取任何内容
firebase.database().ref('/conversations/'+conversation_id).on('child_added', function(snapshot, prevKey) {

});

然后它打印出添加的对话的每个键/值,在本例中:

tom
bob

如何使用存储在用户对话数组中的 key 监视所有对话?

最佳答案

快速“回答”为什么你的第一个代码片段不起作用:

var conversation_id = 'fake-uuid-v4';
firebase.database().ref('/conversations')
.startAt(conversation_id)
.endAt(conversation_id)
.on('child_added', function(snapshot, prevKey) {
if(snapshot.val()) console.log(snapshot);
});

您没有指定顺序,这意味着数据可能按优先级排序。但无论如何,我建议不要使用这种方法,因为您正在构建查询,而您可以直接访问子项(这在规模上会更快):

var conversation_id = 'fake-uuid-v4';
firebase.database().ref('/conversations')
.child(conversation_id)
.on('child_added', function(snapshot, prevKey) {
if(snapshot.val()) console.log(snapshot);
});

关于javascript - 在 Firebase 中通过键查找对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38028568/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com