如何在firebase数据库中定位单个值?

时间:2016-08-28 21:05:11

标签: javascript firebase firebase-realtime-database

我无法弄清楚如何定位firebase数据库中的单个对象。例如,我想在单击索引卡时显示特定的单词/定义。我用这个来存储数据:

wordVal = $("#word").val();
defVal = $("#def").val();

data = firebase.database().ref("indexCards");
data.push( { 'word': wordVal, 'definition': defVal } );         

这是为了检索它:

data.on("child_added", function(snapshot){
    console.log(snapshot.val().word);   
    console.log(snapshot.val().definition);
});

这给了我完整的单词和定义列表。我想分别参考具体的单词和具体的定义。文档说我可以通过这样做来引用特定的值 - firebase.database().ref("child/path")

但我的问题是......当父母是那些随机数字和字母时,我如何引用这条路径(见下文)?我知道这些是firebase生成的唯一ID,但我不知道如何访问它们,就像我访问普通对象一样。

{
  "-KQIOHLNsruyrrnAhqis" : {
    "definition" : "person, place, thing",
    "word" : "noun"
  },
  "-KQIOO7Wtp2d5v2VorqL" : {
    "definition" : "device for photos",
    "word" : "camera"
  },
  "-KQISp4WMnjABxQayToD" : {
    "definition" : "circus act",
    "word" : "clown"
  },
  "-KQITC9W1lapBkMyiL7n" : {
    "definition" : "device used for cutting",
    "word" : "scissors"
  }
}

A photo of my Firebase database

2 个答案:

答案 0 :(得分:0)

您可以使用以下查询:

data = firebase.database().ref('indexCards').orderByChild('word').equalTo('noun')

这是不言自明的,我们引用indexCards,其中键 word 的值等于名词,因此它将返回带有键 -KQHZ3xCHTQjuTvonSwj <的对象< / em>的

链接到Firebase docs: Retrieve data - Sorting and Filtering data

答案 1 :(得分:0)

您需要将初始推送放入对象,然后再调用该对象。即

要推送数据: firebase.database()。ref()。push({'word':wordVal,'definition':defVal})

要更新数据或稍后调用它: firebase.database()。ref(“ indexCards”)。set({})

,或者在这种情况下: data.set({})