gpt4 book ai didi

javascript - OrderByChild、equalTo 和 limitToFirst 查询加载整个数据库

转载 作者:太空宇宙 更新时间:2023-11-04 15:36:33 26 4
gpt4 key购买 nike

我正在尝试在 firebase 中制作一个区域词典应用程序。

数据结构图像:Data structure

用于分页的 OrderByKey 和 limitToFirst 查询工作正常,它仅加载查询的数据。下面的代码示例 -

db.ref('dictionary')
.orderByKey()
.startAt(String(this.perpage * (this.page - 1) + 1))
.limitToFirst(this.perpage)
.once('value')
.then((snapshot) => {
vm.words = []
snapshot.forEach(function (childSnapshot) {
var childKey = childSnapshot.key
var childData = childSnapshot.val()
childData.id = childKey
vm.words.push(childData)
})
vm.inProgress = false
})

但是,当我使用 orderByChild('word').equalTo(search_query).limitToFirst(3) 查询时,它会一次获取所有 176023 条记录(从 websocket 检查)。下面的示例代码 -

db.ref('dictionary')
.orderByKey()
.orderByChild('word')
.equalTo(this.search + '')
// .startAt(String(25 * (this.page - 1) + 1))
.limitToFirst(3)
.on('value', (snapshot) => {
console.log(snapshot)
snapshot.forEach(function (childSnapshot) {
var childKey = childSnapshot.key
var childData = childSnapshot.val()
childData.id = childKey
vm.words.push(childData)
})
vm.inProgress = false
}, (error) => {
console.log(error)
vm.inProgress = false
})

最佳答案

很可能您没有关于 word 的索引。当没有索引时,服务器将整个位置发送给客户端,然后客户端进行过滤。在这种情况下,您还会在 JavaScript 控制台中收到非常明确的警告。

请参阅section in the Firebase documentation on how to define indexes .

关于javascript - OrderByChild、equalTo 和 limitToFirst 查询加载整个数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44301826/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com