使用变量和字符串连接引用 firebase 数据库
Referencing firebase database with a variable and string concatenation
正如您在下面看到的,我正在尝试从数据库中读取数据列表,然后在 javascript 中循环遍历结果。函数在我 open/refresh 页面运行时运行:
firebase.database().ref("Users/" + uid + "/rooms").on("value", function(snapshot) {
snapshot.forEach(function(e) {
var element = e.val();
var roomId = element.Id;
});
});
但是,由于某些原因,用于指定用户 ID 的字符串连接不起作用。当我像这样直接用用户 ID 替换它时:
firebase.database().ref("Users/GR3JFsMrKOjCrLhDNFMaq72COd07/rooms").on.....
效果很好。但是我当然想使用包含当前用户 ID 的变量。
检查用户是否登录时,在 onAuthStateChanged 中为 uid 变量赋值:
firebase.auth().onAuthStateChanged(function(user) {
if (user) {
// User is signed in.
uid = user.uid;
如果我像这样添加 console.log:
firebase.database().ref("Users/" + uid + "/rooms").on("value", function(snapshot) {
console.log(snapshot.parent);
snapshot.forEach(function(e) {
第一个代码示例(使用 uid 变量)的输出是:未定义。
如果我直接指定用户ID是:room-id-1(我想要的结果)。
如何进行字符串连接?或者这是指定当前用户路径的错误方式?
问题极不可能出在字符串连接本身。当您开始从数据库中读取时,很可能 uid
simple 还没有值。
为确保 uid
可用,将数据读取 放入 身份验证状态侦听器,如下所示:
firebase.auth().onAuthStateChanged(function(user) {
if (user) {
uid = user.uid;
console.log("uid="+uid);
firebase.database().ref("Users/" + uid + "/rooms").on("value", function(snapshot) {
snapshot.forEach(function(e) {
var element = e.val();
var roomId = element.Id;
console.log("roodId="+roomId);
});
});
}
})
正如您在下面看到的,我正在尝试从数据库中读取数据列表,然后在 javascript 中循环遍历结果。函数在我 open/refresh 页面运行时运行:
firebase.database().ref("Users/" + uid + "/rooms").on("value", function(snapshot) {
snapshot.forEach(function(e) {
var element = e.val();
var roomId = element.Id;
});
});
但是,由于某些原因,用于指定用户 ID 的字符串连接不起作用。当我像这样直接用用户 ID 替换它时:
firebase.database().ref("Users/GR3JFsMrKOjCrLhDNFMaq72COd07/rooms").on.....
效果很好。但是我当然想使用包含当前用户 ID 的变量。
检查用户是否登录时,在 onAuthStateChanged 中为 uid 变量赋值:
firebase.auth().onAuthStateChanged(function(user) {
if (user) {
// User is signed in.
uid = user.uid;
如果我像这样添加 console.log:
firebase.database().ref("Users/" + uid + "/rooms").on("value", function(snapshot) {
console.log(snapshot.parent);
snapshot.forEach(function(e) {
第一个代码示例(使用 uid 变量)的输出是:未定义。 如果我直接指定用户ID是:room-id-1(我想要的结果)。
如何进行字符串连接?或者这是指定当前用户路径的错误方式?
问题极不可能出在字符串连接本身。当您开始从数据库中读取时,很可能 uid
simple 还没有值。
为确保 uid
可用,将数据读取 放入 身份验证状态侦听器,如下所示:
firebase.auth().onAuthStateChanged(function(user) {
if (user) {
uid = user.uid;
console.log("uid="+uid);
firebase.database().ref("Users/" + uid + "/rooms").on("value", function(snapshot) {
snapshot.forEach(function(e) {
var element = e.val();
var roomId = element.Id;
console.log("roodId="+roomId);
});
});
}
})