【问题标题】:get values as string from firebase data snapshot从 firebase 数据快照中获取值作为字符串
【发布时间】:2021-05-10 00:32:33
【问题描述】:

我想简单地将键的值作为字符串获取并使用它们 但 firebase 快照总是返回键/值对。

else if (message.content === `${prefix}save`) {
    writeUserData(message.author.id, message.author.username);
    message.channel.send('Data written successful!');
    firebase.database().ref('users').child(message.author.id).get()
    .then ((snapshot) => {
        console.log(snapshot.val());
        snapshot.forEach(function(data) {
            //console.log(data.key);
            console.log(data.val);
        });
    });
    message.channel.send('User data is: ');
}

我想获取用户名的值(kha333n 如此)并在message.channel.send('User data is: '); 中使用它

控制台日志

   Debugger attached.
VU Bot Loaded!
644787932519071744

关于使用密钥。

PS C:\VU-Bot> node .\index.js
Debugger attached.
VU Bot Loaded!
{ username: 'kha333n' }
username

与新引用一起使用时返回...(以上更新代码)

 PS C:\VU-Bot> node .\index.js
    Debugger attached.
    VU Bot Loaded!
    { username: 'kha333n' }
    [Function (anonymous)]

当使用 val 代替 key 时返回。

【问题讨论】:

  • key 是一个属性,而不是一个函数。所以data.key.
  • 我已经尝试了文档中给出的所有方法。
  • 我不知道该怎么处理那个乌斯曼。我只能看到您共享的代码和相应的错误消息,在这种情况下(也如错误消息中指出的那样)您试图在 DataSnapshot 上调用 key() 函数,但该类只有key 属性。如果你把它称为data.key(没有())这个错误就会消失。
  • 问题已更新...

标签: javascript node.js firebase firebase-realtime-database


【解决方案1】:

不像key是一个属性,val()其实是一个函数,所以需要用括号()调用。

所以要记录快照的键和值:

firebase.database().ref('users').child(message.author.id).get()
.then ((snapshot) => {
    console.log(snapshot.val());
    snapshot.forEach(function(data) {
        console.log(data.key);
        console.log(data.val());
    });
});

如果您只想获取用户的用户名,可以通过以下方式更轻松地完成:

firebase.database().ref('users').child(message.author.id).child('username').get()
.then ((snapshot) => {
    console.log(snapshot.val());
});

在这里您不需要循环,因为我们已经加载了我们感兴趣的一个属性。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-07-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-07-21
    • 2018-09-26
    • 2020-07-19
    相关资源
    最近更新 更多