访问Firebase快照中的第一个数据
Access first datum in Firebase snapshot
我试图仅在由10个URL组成的Firebase快照中访问第一个数据的属性。然而,无论我尝试什么,我都会得到完整的快照。我的代码看起来像:
myDataRef.limitToLast(10).on("child_added", function(snapshot) {
var newImg = snapshot.child("url");
console.log(newImg);
});
有没有办法在整个快照上指定[0]或类似的东西,这样我就可以得到第一个数据?
在没有看到数据结构的情况下很难确定,但我认为您正在寻找:
myDataRef.limitToLast(10).on("child_added", function(snapshot) {
var newImg;
snapshot.forEach(function(urlSnapshot) {
if (!newImg) {
newImg = urlSnapshot.val();
}
});
console.log(newImg);
});
forEach()
在snapshot
的所有子键上循环,并使用每个子键的DataSnapshot
调用内部回调。
newImg = urlSnapshot.val();
将只获取该子项的值。您可能需要根据您的数据结构修改此位。
让我更倾向于这样说,数据在firebase中的存储顺序没有保证——第一项或索引第0项的概念由数据的存储方式和数据的检索方式决定。
因此,最好的选择是将所有值作为快照加载,并按指定值(如日期或高度等)排序,然后从排序后的数组中提取第0个索引,或者加载一个子集数据并使用queryOrderedByChild或queryStartingAtValue
这可能是这个问题的答案:它只检索指定节点中的第一个值:
users
user_0
firstName: "Fred"
user_1
firstName: "Bill"
user_2
firstName: "Ted"
和代码
usersRef.observeSingleEventOfType(.ChildAdded, withBlock: { snapshot in
if snapshot.value is NSNull {
print("snapshot was NULL")
} else {
print(snapshot)
}
})
以及结果
Snap (user_0) {
firstName = Fred;
}
您需要先将快照存储为数组,然后以[0]的形式访问它。
我不在我的mac电脑上(我正在回答你关于iOS的问题,但我相信概念是一样的),所以这只是我的记忆,但如果语法正确,它就可以工作:
var newImgArray=快照.children.object为?[FS快照]var newImg=newImgArray[0]。value
相关文章:
- 使用数据上的角度更改设置集合的第一个元素的动画
- promise.all只返回第一个数据
- 如何从php中第一个动态生成的第二个下拉列表将数据存储到数据库中
- KendoUI AreaChart的分类轴仅基于第一个数据组
- 使用数据表,我想只搜索第一个字母
- 更改第二个组合框的数据,更改第一个组合框的数据
- 在 ajax 将数据传递给 php 后,页面将不会加载第一个条目,但仍会加载其余条目
- For 循环不迭代,输出的数据不超过第一个任务
- 在分页中显示数据表的第一个和最后一个按钮
- 数据表:禁用第一个下一个上一个最后一个,并在处理时显示/搜索记录
- 加载另一个相同页面时,使用新数据激活第一个网页
- JSON 数据未绑定到从 SAPUI5 应用中的第一个视图导航的视图中
- 从 jquery/javascript 中字符串的第一个字符过滤表数据
- PHP 不会在 JavaScript HTTP 请求的第一个页面加载时加载数据
- 数据标签格式化程序在 Highchart 中用于第一个类别
- 当第二个输入框填充第一个框中的数据时显示警报
- 引导工具提示不't在与第一个数据表不同的页面中工作
- 访问Firebase快照中的第一个数据
- 当有更多具有相同名称的数据对象时,如何从JSON响应中仅获取第一个数据对象的值
- js查找从webapi控制器返回的第一个数据属性的模型