Firebase 3 orderByChild 不适用于 ionic2
Firebase 3 orderByChild not working with ionic2
我正在尝试从我的 firebase 数据库中检索数据,但我无法按子值对数据进行排序。
data.db.orderByChild('likes').on('value', data => {
this.posts = data.val();
this.posts = Object.keys(this.posts).map(key => this.posts[key])
console.log(this.posts);
});
这是我的数据服务
this.db = firebase.database().ref('/posts');
这是我的数据库结构
{
"posts": {
"1473631200000": {
"date": "12.02.2016",
"imageUrl": "http..."
"userId": "id",
"likes": 20
}
"1473804000000": {
"date": "12.08.2016",
"imageUrl": "http..."
"userId": "id",
"likes": 284
}
}
}
我可以检索数据,但我无法按喜欢的值对它们进行排序。我只想让置顶帖更靠前。
如果您对 Firebase 数据库执行查询,它 returns 一个 DataSnapshot。该快照包含子项的键、值 和顺序 。
当您从快照中检索 val()
时,它会将其转换为键和值的字典。在这种情况下它失去了顺序。
为了保持顺序,使用 forEach
遍历 DataSnapshot,然后才得到值:
data.db.orderByChild('likes').on('value', data => {
this.keys = [];
this.posts = [];
data.forEach(child => {
this.keys.push(child.key);
this.posts.push(child.val());
});
console.log(this.posts);
});
我正在尝试从我的 firebase 数据库中检索数据,但我无法按子值对数据进行排序。
data.db.orderByChild('likes').on('value', data => {
this.posts = data.val();
this.posts = Object.keys(this.posts).map(key => this.posts[key])
console.log(this.posts);
});
这是我的数据服务
this.db = firebase.database().ref('/posts');
这是我的数据库结构
{
"posts": {
"1473631200000": {
"date": "12.02.2016",
"imageUrl": "http..."
"userId": "id",
"likes": 20
}
"1473804000000": {
"date": "12.08.2016",
"imageUrl": "http..."
"userId": "id",
"likes": 284
}
}
}
我可以检索数据,但我无法按喜欢的值对它们进行排序。我只想让置顶帖更靠前。
如果您对 Firebase 数据库执行查询,它 returns 一个 DataSnapshot。该快照包含子项的键、值 和顺序 。
当您从快照中检索 val()
时,它会将其转换为键和值的字典。在这种情况下它失去了顺序。
为了保持顺序,使用 forEach
遍历 DataSnapshot,然后才得到值:
data.db.orderByChild('likes').on('value', data => {
this.keys = [];
this.posts = [];
data.forEach(child => {
this.keys.push(child.key);
this.posts.push(child.val());
});
console.log(this.posts);
});