Javascript Firebase js库从非空数据库检索空数据

Javascript Firebase js库从非空数据库检索空数据,javascript,firebase,firebase-realtime-database,Javascript,Firebase,Firebase Realtime Database,复制步骤: 将firebase db初始化为: { "restaurants" : [ { "address" : "via Rettifilo, 34 Castelguidone CH Italy", "title" : "Dama & Dama" }, { "address" : "Corso Umberto I, 3 Castelguidone CH Italy", "title" : "Bar sabatino" } ] } 检查您的

复制步骤:

将firebase db初始化为:

{
  "restaurants" : [ {
    "address" : "via Rettifilo, 34 Castelguidone CH Italy",
    "title" : "Dama & Dama"
  }, {
    "address" : "Corso Umberto I, 3 Castelguidone CH Italy",
    "title" : "Bar sabatino"
  } ]
}
检查您的读/写firebase任务规则是否正确

{
  "rules": {
    ".read": true,
    ".write": true
  }
}
执行以下js代码:

firebase.inizializeApp(yourJsonConfig)
\*code*\
firebase.database().ref().once('value').then(function(snapshot){ 
    console.log(snapshot.val()); \\ this will print  Array(0)
})
预期行为:控制台日志
“{'restaurants'…..}”

实际行为:控制台日志
“数组(0)”
,即没有数据

我使用firebase js库(版本4.13.1)。我哪里错了?

您需要使用val()方法返回数据

 firebase.database().ref().once('value').then(function(snapshot){ 
    console.log(snapshot.val());
})
编辑:那么您的问题存在于另一段代码中,而您没有显示

检查此示例:

在控制台日志中:

并查看我的数据:


您需要为每个餐厅的家长提供唯一的钥匙。您可以在Firebase中使用“push”函数来实现此目的。

传递给回调函数的
snapshot
参数是一个类型为的对象。您不应该假设DataSnapshot的JSON格式字符串只包含数据库中该位置的数据。从API文档中可以看到,DataSnapshot中有很多方法和功能


您要做的是调用该快照,以便从中提取JavaScript值。阅读API文档以进一步了解该对象可能包含的内容。

尝试
console.log(snapshot.val())。例如。我已经尝试过,但没有成功,这不会改变任何事情:(@SimoneMSR检查我的新编辑以获得您问题的完整示例。我明白您的观点(我已经更新了问题),但是val()方法返回
[]