- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
您好,我正在使用 ionic 和 firebase 构建一个应用程序,这是我的 firebase 模型:
{
"users" : {
"D972XU" : {
"8b91cc58-a962-4753-abd9-896b8a9418d5" : {
"email" : "jim@aol.com",
"house_key" : "D972XU",
"username" : "jim"
},
"8ea6537a-6385-4797-8fc3-62e9e5f06ac6" : {
"email" : "george@gmail.com",
"house_key" : "D972XU",
"username" : "george"
}
},
"V1OVU5" : {
"f4f283c0-f503-4d50-8af8-7a9ad592ca74" : {
"email" : "john@yahoo.com",
"house_key" : "V1OVU5",
"username" : "john"
}
},
"YOKSPN" : {
"891bb612-4666-4095-be62-87c81f65c895" : {
"email" : "jeff@gmail.com",
"house_key" : "YOKSPN",
"username" : "jeff"
}
}
}
}
在模型中,用户存储在随机生成的字符串下。我的问题是我正在尝试使用 firebase 文档中的以下代码查找字符串的值:
var ref = new Firebase("https://dinosaur-facts.firebaseio.com/dinosaurs");
ref.orderByChild("height").on("child_added", function(snapshot) {
console.log(snapshot.key() + " was " + snapshot.val().height + " meters tall");
});
我的版本:
app.factory('fireBaseData', function($firebase) {
var usersRef = new Firebase("https://mynextapp.firebaseio.com/users");
return {
ref: function() {
return ref;
}
};
});
app.controller('LoginCtrl', function($scope, $state, fireBaseData) {
fireBaseData.usersRef().child(authData.uid).orderByChild("email").on("child_added", function(snapshot) {
console.log(snapshot.key());
});
});
根据文档,您不需要知道特定恐龙/字符串的值即可访问其详细信息。但是,该代码对我不起作用。请帮忙?
请注意,/users、D972XU、V10VU5 和 YOKSPN 的子节点是随机生成的。
最佳答案
如果你想根据子值返回一个节点(键),代码如下:
var ref = new Firebase("https://mynextapp.firebaseio.com/users/D972XU");
ref.orderByChild("username").equalTo("jim").on("child_added", function(snapshot) {
console.log(snapshot.key());
});
或用于邮件
var ref = new Firebase("https://mynextapp.firebaseio.com/users/D972XU");
ref.orderByChild("email").equalTo("jim@aol.com").on("child_added", function(snapshot) {
console.log(snapshot.key());
});
在这种情况下,您的/users 节点具有随机生成的直接子节点,并且您要查找的数据位于这些子节点内。因此,查询无法“到达”您的数据,因为它太深了。即使是深度查询也需要更多信息才能工作。所以你有:
/users/random_node_name/uid
所以这个
fireBaseData.usersRef().child(authData.uid)
不起作用,因为它忽略了用户和 authData.uid 之间的节点。
但是 - 结构中提供了解决方案。随机生成的节点名称也存储在数据中(重复),这可能不需要将其用作 key 。
将数据上移一级是一种解决方案,因此将结构更改为:
{
"users" : {
"8b91cc58-a962-4753-abd9-896b8a9418d5" : {
"email" : "jim@aol.com",
"house_key" : "D972XU",
"username" : "jim"
},
"8ea6537a-6385-4797-8fc3-62e9e5f06ac6" : {
"email" : "george@gmail.com",
"house_key" : "D972XU",
"username" : "george"
},
"f4f283c0-f503-4d50-8af8-7a9ad592ca74" : {
"email" : "john@yahoo.com",
"house_key" : "V1OVU5",
"username" : "john"
},
"891bb612-4666-4095-be62-87c81f65c895" : {
"email" : "jeff@gmail.com",
"house_key" : "YOKSPN",
"username" : "jeff"
}
}
}
顺便说一句,我建议的结构是 Firebase 中/users 节点的“传统”结构。事实证明,它具有一致性、可扩展性和可维护性(并且使使用规则来保护数据变得更加容易)。
您原来的结构将难以让规则发挥作用。
关于javascript - Firebase orderByChild 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35804706/
我正在尝试根据 documentation example 使用 Firebase orderByChild() 函数,但查询未返回过滤或排序。 这是示例数据结构: "notifications":
当子属性具有名称时,Firebase orderByChild() 效果很好,因此对于如下数据: groups groupStatus: "Active" 通过以下方式可以轻
我的 Firebase 架构如下所示, 我正在尝试获取general中的数据并按numberOfLikes属性对它们进行排序。根据我对 orderByChild 的理解,以下代码应该可以工作。 var
您好,我正在使用 ionic 和 firebase 构建一个应用程序,这是我的 firebase 模型: { "users" : { "D972XU" : { "8b91cc5
我正在尝试查询我的数据库以获取子编号> 7的所有日期 this.extra = function() { refer = ref.child(slot); refer.orderByC
我正在尝试使用 orderByChild 对快照进行排序,但这不起作用。 Firebase 规则: "rules": { "community": { "users": { "
我想在时间戳上使用 orderByChild。 但效果并不好。它们甚至按升序或降序排序。 这是结果: 第一:1581952308253 第二位:1581671445437 最后:15832546051
我正在尝试从“通知”子项获取通知计数。还有另一个 child 有一个随 secret 钥(我不知道),其中有一个 userKey 值。 我想使用 orderByChild("userKey") 并获取
这个问题在这里已经有了答案: Firebase query ordering not working properly (2 个答案) 关闭 4 年前。 我的示例数据 代码 let us
我有以下单子(monad)数据结构,想通过子属性 rating 检索订单列表: 示例数据结构 players: { 360368: { name: "Joe, Blogs",
我在使用 orderByChild().equalTo() 方法检索和删除 Firebase 数据库中节点的正确级别时遇到问题。 在网上搜索了好久,并没有真正解决我的问题。请帮忙。 我的数据库结构:
我目前正在使用 Firebase 编写 Android 应用程序。我有一个具有城市属性的产品模型。我正在运行以下查询: mDatabaseReference = FirebaseDatabase.ge
我正在使用 FirebaseRecyclerAdapter 来显示字符串列表。我的查询使用 orderByChild。结果首先用大写字母排序,如下所示: 项目 1、项目 2、项目 3、aItem、bI
我有两种方式对数据库表进行排序。 第一个是按日期(在我的情况下是创建),第二个是按得分。 所以我有一个下拉菜单,用户可以在其中指定他们想要排序的依据,并且我有一个调用正确数据库引用的函数。 goTo
使用 Firebase JS 库。尝试访问 firebase 查询结果中的值但没有成功: var ref = firebase.database().ref(`/listUser/${userId
当动态键位于实际引用和数据之间时,按子项(名称)排序不起作用。 这是我的代码: firebase.database().ref('/usersProfile').orderByChild('name'
我正在使用 FirebaseRecyclerAdapter 来显示字符串列表。我的查询使用 orderByChild。结果首先按大写字母排序,如下所示: 项目 1、项目 2、项目 3、aItem、bI
我尝试按子值“月”对数据库进行排序,但 orderByChild 不起作用。当我使用 onChildEventListener 而不是 addListenerForSingleValueEvent 时
我正在创建一个电话目录应用程序,我想在不同的 Activity 中显示不同的类别数据。我想帮助人们在不同类别中轻松找到他们的信息它向我显示了数据库中的所有数据。但我不想只显示“救护车联系人”类别数据。
我正在使用 FirebaseRecyclerAdapter。 我有许多带有子“maxValue”的节点。假设我有五个节点,列出的每个节点的最大值分别为 34、210、90、315、74。 我期望 .o
我是一名优秀的程序员,十分优秀!