Javascript firebase->;日期顺序相反
我目前正在使用Firebase制作一个应用程序 这是在网上任何地方都能看到的公告栏之一 但有一个问题 这是一个日期排序的问题 我想先查看最近的日期,但我总是只看到我首先创建的数据Javascript firebase->;日期顺序相反,javascript,firebase,firebase-realtime-database,Javascript,Firebase,Firebase Realtime Database,我目前正在使用Firebase制作一个应用程序 这是在网上任何地方都能看到的公告栏之一 但有一个问题 这是一个日期排序的问题 我想先查看最近的日期,但我总是只看到我首先创建的数据 postRef.orderByChild('createData').startAt(reverseDate).limitToFirst(1).on('child_added',(data)=>{ console.log(data.val().name + data.val().createData);
postRef.orderByChild('createData').startAt(reverseDate).limitToFirst(1).on('child_added',(data)=>{
console.log(data.val().name + data.val().createData);
})
结果->hello1496941142093
我的火基树
我的代码与上面相同
我怎样才能先查看我最近的帖子
如何对firebase数据库进行反向排序?firebase数据库将始终以升序返回结果。没有办法扭转这种局面 有两种常见的解决方法:
- 此列表中还有更多内容:
function reverseObject(object) {
var newObject = {};
var keys = [];
for (var key in object) {
keys.push(key);
}
for (var i = keys.length - 1; i >= 0; i--) {
var value = object[keys[i]];
newObject[keys[i]]= value;
}
return newObject;
}
我就是这样解决的:
首先,我在我的服务中进行了一个查询,其中我按日期(以毫秒为单位)进行筛选:
getImages (): Observable<Image[]> {
this.imageCollection = this.asf.collection<Image>('/images', ref => ref.orderBy('time').startAt(1528445969388).endAt(9999999999999));
this.images = this.imageCollection.snapshotChanges().pipe(
map(actions => actions.map(a => {
const data = a.payload.doc.data() as Image;
const id = a.payload.doc.id;
return { id, ...data };
}))
);
return this.images;
我把时间当作日期。由于较新的日期将是从99999999999中扣除的较大数字,因此最新日期将首先出现在我的服务内的查询中
希望这能为您解决问题我已经结束了在前端部分创建列表的更改 是 改为
posts.insert(0, post);
您可以使用一种方法,在该方法中使用负值保存同一子级或备用子级,然后对其进行解析
postRef.orderByChild('createData').orderByChild('createData').on('child_added',(data)=>{
console.log(data.val().name + data.val().createData);})
如果您想在前端显示它,我建议在检索数据后,使用JavaScript的
reverse()
函数
例如:
let result = postRef
.orderByChild("createData")
.startAt(reverseDate)
.limitToFirst(1)
.on("child_added", data => {
console.log(data.val().name + data.val().createData);
});
result.reverse();
更简单的方法是使用Swift的
reversed()
:
非常感谢。首先,我不理解0-new Date().Getitme()在数据库中的firebase中插入到。。但我不明白。。非常感谢。它不适用于对象。
postRef.orderByChild('createData').orderByChild('createData').on('child_added',(data)=>{
console.log(data.val().name + data.val().createData);})
let result = postRef
.orderByChild("createData")
.startAt(reverseDate)
.limitToFirst(1)
.on("child_added", data => {
console.log(data.val().name + data.val().createData);
});
result.reverse();
let decodedIds = try DTDecoder().decode([String].self, from: value)
// we reverse it, because we want most recent orders at the top
let reversedDecodedIds = decodedIds.reversed().map {$0}