gpt4 book ai didi

javascript - Firebase 数据库 startAt() 字符串参数长度限制?

转载 作者:行者123 更新时间:2023-11-28 17:27:58 27 4
gpt4 key购买 nike

正打算将其发布到他们的 github 存储库,但似乎他们更喜欢在这里提出一般性问题。

那么使用startAt()从firebase数据库获取数据时参数有字符串长度限制吗?

我遇到了一个问题,它似乎仅限于 41 个符号,而且我似乎找不到任何文档来确认这一点。

如果确实是极限的话,有什么办法可以改变吗? (我需要能够按最多 60 个符号的值进行过滤)

我的意思是,我仍然可以传递更长的参数,但数据库返回的结果仅被前 41 个字符过滤掉,而忽略其余值。

我正在使用 js sdk,以防它在这里很重要。

数据集(每个值约 100 个字符长,前 41 个字符相同,但尾部不同)

{
"obj1": {"param": "abcdefghijklmnopqrstuvwxyz0123456789ABCDEF_0123456789ABCDEFabcdefghijklmnopqrstuvwxyz0123456789ABCDEF"},
"obj2": {"param": "abcdefghijklmnopqrstuvwxyz0123456789ABCDEF_123456789ABCDEFabcdefghijklmnopqrstuvwxyz0123456789ABCDEF"},
"obj3": {"param": "abcdefghijklmnopqrstuvwxyz0123456789ABCDEF_23456789ABCDEFabcdefghijklmnopqrstuvwxyz0123456789ABCDEF"},
"obj4": {"param": "abcdefghijklmnopqrstuvwxyz0123456789ABCDEF_3456789ABCDEFabcdefghijklmnopqrstuvwxyz0123456789ABCDEF"},
"obj5": {"param": "abcdefghijklmnopqrstuvwxyz0123456789ABCDEF_456789ABCDEFabcdefghijklmnopqrstuvwxyz0123456789ABCDEF"}
}

现在我需要通过键“param”的值检索“obj1”,并且我只知道它的前 60 个字符(所以我不能使用 equalTo() )

var ref = firebase.database().ref("/some/data");

ref.orderByChild("param")
.startAt("abcdefghijklmnopqrstuvwxyz0123456789ABCDEF_0123456789ABCDEFabc") <- this guy is 60 characters long
.once("value")
.then(function(snapshot) {
snapshot.forEach(function(child) {
console.log(child.key);
});
})

我期望这里只有一个结果,但上面的代码返回了该集中的所有记录。

最佳答案

您似乎对 startAt 操作感到困惑,并尝试使用它来过滤某个子字符串开头的字符串。但这不是 startAt 的工作原理。

当您按 param 的值对子项进行排序时,Firebase 会按该属性的值对所有子项进行排序。然后,当您从 abcdefghijklmnopqrstuvwxyz0123456789ABCDEF_0123456789ABCDEFabc 开始时,它会从该点开始返回节点。按照这个顺序,abcdefghijklmnopqrstuvwxyz0123456789ABCDEF_123456789ABCDEFabcdefghijklmnopqrstuvwxyz0123456789ABCDEF出现在abcdefghijklmnopqrstuvwxyz0123456789ABCDEF_0123之后456789ABCDEFabc

如果您希望第一个子元素某个值开始,请考虑使用.startAt(searchTerm).limitToFirst(1)

如果您想让子级某个值开始,请使用封闭范围startAt(searchTerm).endAt(searchTerm+"\uf8ff")。这里 \uf8ff 是最后一个 unicode 字符。

关于javascript - Firebase 数据库 startAt() 字符串参数长度限制?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51151783/

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