【发布时间】:2019-04-13 06:23:58
【问题描述】:
我正在尝试使用 .orderByChild 对数据进行排序,但数据是按节点名称过滤的。
我在 Firebase 上添加了这个:
"concerts": {
".indexOn": "expires"
}
这是我的 index.js 文件中的代码:
loadConcerts ({commit}) {
commit('setLoading', true)
firebase.database().ref("concerts").orderByChild("expires").startAt(Date.now()/1e3).limitToFirst(7).once("value")
.then((data) => {
const concerts = []
const obj = data.val()
for (let key in obj) {
concerts.push({
expires: obj[key].expires,
...
})
}
commit('setLoadedConcerts', concerts)
commit('setLoading', false)
})
我也添加了这个:
getters: {
loadedConcerts (state) {
return state.loadedConcerts.sort((concertA, concertB) => {
return concertA.expires > concertB.expires
})
},
loadedConcert (state) {
return (concertId) => {
return state.loadedConcerts.find((concert) => {
return concert.id === concertId
})
}
也许有人有线索?谢谢
【问题讨论】:
-
你能分享你的数据库结构和数据样本吗?
-
这里是数据库结构:firebasestorage.googleapis.com/v0/b/koplesh-1a17e.appspot.com/o/…谢谢你的帮助 Renaud
-
@RenaudTarnec 有什么想法吗?如果您需要更多东西,请告诉我:)
-
如果您尝试使用简单的 JavaScript 页面进行查询会发生什么?制作一个类似于此答案stackoverflow.com/questions/52468815/… 中的简单 HTML 页面,并像您所做的那样查询您的数据库
firebase.database().ref("concerts").orderByChild("expires").startAt(Date.now()/1e3).limitToFirst(7).once("value") .then((data) => {console.log(data.size)});HTML 页面可以存储在您的 PC 上本地,您可以在浏览器中打开文件。 -
嗨,如上所述,您有时间独立于 Vue.js 代码测试您的查询吗?
标签: firebase vue.js firebase-realtime-database vuex vuetify.js