[英]how can i order by snapshot's child data containing a timestamp index with vue js
[英]How can i order a snapshot value in timestamp order?
我想在發布日期之前顯示提要中的帖子,我目前正在由用戶顯示它們,這非常令人困惑,我希望它能在帖子創建日期之前顯示帖子,我我正在使用 Firebase 和 Vue.js v2
我知道 firebase 會自動存儲一個時間戳,所以我正在尋找一種方法來根據該時間戳對帖子進行排序,而不管用戶順序如何,它仍然可行嗎?
這是我用來從 Firebase 獲取數據的代碼和組件上的代碼。
<template>
<div>
<div
v-for="post in allPosts.slice().reverse()"
:key="post._key">
<v-card class=" feed-card my-3">
<v-row no-gutters>
<v-col cols="1">
<v-img
class="align-center rounded-xl "
width="30"
:src="post.photoURL">
</v-img>
</v-col>
<v-col cols="10">
<p class="">{{post.postText}}</p>
<p class="blue-grey--text ">{{post.displayName}}</p>
</v-col>
</v-row>
</v-card>
</div>
</div>
</template>
<script>
import firebase from '@/plugins/firebase'
let db = firebase.database();
//let usersRef = db.ref('users');
let postRef = db.ref('posts');
export default {
name: 'FintechSocialFeed',
data: () => ({
authUser: null,
allPosts: [] // initialise an array
}),
methods: {
},
created: function() {
data => console.log(data.user, data.credential.accessToken)
firebase.auth().onAuthStateChanged(user => {
if (user) {
postRef.on('value', snapshot => {
const val = snapshot.val()
if (val) {
this.allPosts = Object.values(val).flatMap(posts =>
Object.entries(posts).map(([ _key, post ]) => ({ _key, ...post})))
}
console.log(snapshot.val())
});
}
})
}
}
</script>
這是它的外觀的小圖片,首先是 Abraham 的帖子,然后是 jake 的帖子,所以我希望它按日期顯示,而不是按用戶順序顯示。
Firestore 只能根據它具有索引的值來排序/過濾數據。 雖然它也可能出於自己的目的存儲額外的元數據,但這些值通常沒有索引(文檔 ID 是一個例外),因此不能在查詢中使用。
因此無法根據內部時間戳對 Firestore 結果進行排序。 如果您希望能夠根據時間戳對文檔進行排序,則必須將該時間戳存儲為文檔中的一個字段,然后將該字段名稱傳遞給orderBy
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.