gpt4 book ai didi

javascript - 如何在 Firebase 表上进行联接

转载 作者:行者123 更新时间:2023-11-28 04:15:20 25 4
gpt4 key购买 nike

我正在尝试从两个表中获取数据,例如(获取所有用户及其详细信息)

tableOne.on('users', function (snapshot) {
userId = snapshot.val().userId; // line 1 (results like 1,2,3,4,5,6)
anotherTable.child('userdetails').child(userId).once('value', function(mediaSnap) {
// result // line 2
});
});

但问题是第 1 行首先执行 6 次,然后第 2 行执行 n 次,导致每次都在查找“其中用户 id 是 - 6”...Firebase 不支持连接吗?

感谢任何帮助

最佳答案

您的代码片段有一个令人讨厌的副作用:

var userId;
tableOne.on('value', function (snapshot) {
userId = snapshot.val().userId; // line 1 (results like 1,2,3,4,5,6)
anotherTable.child('userdetails').child(userId).once('value', function(mediaSnap) {
console.log(userId + ":" + mediaSnap.val().name);
});
});

您没有将 userId 声明为变量,这意味着它成为 JavaScript 中的全局变量。而且由于回调函数是异步执行的,因此全局值很有可能在您需要时已经更改。

解决方案很简单,将userId设置为回调函数的局部变量:

tableOne.on('value', function (snapshot) {
var userId = snapshot.val().userId; // line 1 (results like 1,2,3,4,5,6)
anotherTable.child('userdetails').child(userId).once('value', function(mediaSnap) {
console.log(userId + ":" + mediaSnap.val().name);
});
});

这将确保在函数内捕获 userId 的每个值。

关于javascript - 如何在 Firebase 表上进行联接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45918604/

25 4 0
文章推荐: css - 输入框样式无法正常工作
文章推荐: php - 如何用 PHP 隐藏 HTML 标签?
文章推荐: html - 简单的 XSLT 问题 : setting inner HTML node attribute values such as
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com