Firebase动态检索数据

时间:2016-09-23 06:25:04

标签: reactjs firebase react-native firebase-realtime-database native

问题

我试图显示来自我的firebase的数据,具体取决于它的星期几。我的firebase儿童在isoWeek的日子里拥有1,2,3,4,5,6,7的标题,其值为随机单词。我的问题是,如果它的星期一如何我只检索星期一的数据?代码如下

React Native Code

 var MY VARIABLE = moment().isoWeekday(); //Friday is 5
 var items = [];
  snap.forEach((child) => {

    items.push({
      title: child.val().title,
      profile:child.val().profile,
      test:child.val().test,
      special:child.val().today, //,<---- I want this child.val().MY VARIABLE
      _key: child.key,
    });
  });'

火力地堡

  "myWords" : {
    "words" : {
      "1" : "Tool box",
      "2" : "Ice Cream",
      "3" : "Lavender",
      "4" : "Speakers",
      "5" : "Pepsi",
      "6" : "Windows",
      "7" : "Linux",
    }
  }

所以说例如星期五,或者5.我想用变量检索child.val()。5。这可以实现吗?谢谢!

3 个答案:

答案 0 :(得分:1)

是的,这绝对是可以实现的!

尝试:child.val()[variable]

在javascript中,我们可以使用点或括号访问对象的属性。例如,object.propertyobject["property"]

同样,在您的情况下,要使用变量访问firebase元素,您可以执行child.val()[variable]其中variable是某个字符串或整数来访问firebase对象的属性。也许变量= 5或变量=&#39; 5&#39;。

答案 1 :(得分:1)

你只需要替换child.val()。今天---&gt; child.val()[我的变量]

var MY_VARIABLE = moment().isoWeekday(); //Friday is 5
 var items = [];
  snap.forEach((child) => {

    items.push({
      title: child.val().title,
      profile:child.val().profile,
      test:child.val().test,
      special:child.val()[MY_VARIABLE],
      _key: child.key,
    });
  });

答案 2 :(得分:0)

不幸的是,您将会遇到Firebase客户端如何处理数组的问题。

Firebase客户端会将您的数据解释为数组并将其转换为:

"myWords" : {
  "words" : {
    "item1" : "Tool box",
    "item2" : "Ice Cream",
    "item3" : "Lavender",
    "item4" : "Speakers",
    "item5" : "Pepsi",
    "item6" : "Windows",
    "item7" : "Linux",
  }
}

因此它在数组的第一个位置插入一个空值。如果这不是您的应用程序的问题,那么您可以接受这个。

但对于许多应用来说,这个额外的项目是个问题。在这些情况下,我们建议您在数字前加上一些固定字符串,以确保Firebase不会对其进行字符串解释:

 a <- as.data.frame(c(1,0,0, 0,1,1,1,1,1,0,0))

有关Firebase如何处理数组的详细信息,请参阅此博客文章:https://firebase.googleblog.com/2014/04/best-practices-arrays-in-firebase.html