Firebase 动态检索数据
Firebase retrieve data dynamically
问题
我正在尝试根据星期几显示来自我的 firebase 的数据。我的 firebase children 在 isoWeek 的日子里有 1,2,3,4,5,6,7 的标题,其值为随机词。我的问题是,如果是星期一,我如何只检索星期一的数据?代码如下
React 本机代码
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,
});
});'
Firebase
"myWords" : {
"words" : {
"1" : "Tool box",
"2" : "Ice Cream",
"3" : "Lavender",
"4" : "Speakers",
"5" : "Pepsi",
"6" : "Windows",
"7" : "Linux",
}
}
所以比如说它的星期五,或者 5。我想用一个变量检索 child.val().5。这是可以实现的吗?谢谢!
是的,这绝对是可以实现的!
尝试:child.val()[variable]
在javascript中,我们可以使用点或括号访问对象的属性。例如,object.property
或 object["property"]
。
同样,在您的情况下,要使用变量访问 firebase 元素,您可以执行 child.val()[variable]
,其中变量是某个字符串或整数以访问 firebase 对象的 属性。也许 variable = 5 或 variable = '5'.
你只需要替换 child.val().today ---> child.val()[MY VARIABLE]
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,
});
});
不幸的是,您将在此处纠结于 Firebase 客户端如何处理数组。
Firebase 客户端会将您的数据解释为数组并将其转换为:
"myWords" : {
"words" : [
null,
"Tool box",
"Ice Cream",
"Lavender",
"Speakers",
"Pepsi",
"Windows",
"Linux",
]
}
所以它在数组的第一个位置插入一个空值。如果这对您的应用来说不是问题,那么您可以接受。
但对于许多应用程序来说,这个额外的项目是个问题。在这些情况下,我们建议您在数字前加上一些固定字符串,以确保 Firebase 不会执行其字符串解释:
"myWords" : {
"words" : {
"item1" : "Tool box",
"item2" : "Ice Cream",
"item3" : "Lavender",
"item4" : "Speakers",
"item5" : "Pepsi",
"item6" : "Windows",
"item7" : "Linux",
}
}
有关 Firebase 如何处理数组的更多信息,请参阅此博客 post:https://firebase.googleblog.com/2014/04/best-practices-arrays-in-firebase.html
问题
我正在尝试根据星期几显示来自我的 firebase 的数据。我的 firebase children 在 isoWeek 的日子里有 1,2,3,4,5,6,7 的标题,其值为随机词。我的问题是,如果是星期一,我如何只检索星期一的数据?代码如下
React 本机代码
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,
});
});'
Firebase
"myWords" : {
"words" : {
"1" : "Tool box",
"2" : "Ice Cream",
"3" : "Lavender",
"4" : "Speakers",
"5" : "Pepsi",
"6" : "Windows",
"7" : "Linux",
}
}
所以比如说它的星期五,或者 5。我想用一个变量检索 child.val().5。这是可以实现的吗?谢谢!
是的,这绝对是可以实现的!
尝试:child.val()[variable]
在javascript中,我们可以使用点或括号访问对象的属性。例如,object.property
或 object["property"]
。
同样,在您的情况下,要使用变量访问 firebase 元素,您可以执行 child.val()[variable]
,其中变量是某个字符串或整数以访问 firebase 对象的 属性。也许 variable = 5 或 variable = '5'.
你只需要替换 child.val().today ---> child.val()[MY VARIABLE]
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,
});
});
不幸的是,您将在此处纠结于 Firebase 客户端如何处理数组。
Firebase 客户端会将您的数据解释为数组并将其转换为:
"myWords" : {
"words" : [
null,
"Tool box",
"Ice Cream",
"Lavender",
"Speakers",
"Pepsi",
"Windows",
"Linux",
]
}
所以它在数组的第一个位置插入一个空值。如果这对您的应用来说不是问题,那么您可以接受。
但对于许多应用程序来说,这个额外的项目是个问题。在这些情况下,我们建议您在数字前加上一些固定字符串,以确保 Firebase 不会执行其字符串解释:
"myWords" : {
"words" : {
"item1" : "Tool box",
"item2" : "Ice Cream",
"item3" : "Lavender",
"item4" : "Speakers",
"item5" : "Pepsi",
"item6" : "Windows",
"item7" : "Linux",
}
}
有关 Firebase 如何处理数组的更多信息,请参阅此博客 post:https://firebase.googleblog.com/2014/04/best-practices-arrays-in-firebase.html