我想用两个where条件进行查询。我开始知道直接在 firebase 中是不可能的。所以,我采用了下面的方法。将两个属性存储为一个字段并对该字段进行查询。但我没有得到正确的结果。我也收到不匹配的记录,为什么?
await firebase
.child(child)
.orderByChild('t_p')
.startAt(startAt + pId, 't_p')
.endAt((timestamp - 1) + pId, 't_p')
.limitToLast(15)
我尝试了以下方法
await firebase
.child(child)
.orderByChild('t_p')
.startAt(startAt + pId)
.endAt((timestamp - 1) + pId)
.limitToLast(15)
这两个有什么区别? startat 和 endat 中的第二个选项参数是什么?
我的数据是这样的
{
t_p: "145343423423_afihad223dadd"
},
{
t_p: "1453434133323_afihad223dadd"
},
{
t_p: "145223423423_kkkkaaass"
},
{
t_p: "145223423450_kkkkaaass"
}
如果我查询
.child(child)
.orderByChild('t_p')
.startAt("145223423423_kkkkaaass", 't_p')
.endAt("145223423450_kkkkaaass", 't_p')
.limitToLast(15)
我还获得了其他记录。为什么?
最佳答案
这是因为它是按字典顺序排序的,并且 145343423423 位于 145223423423 和 145223423450 之间。
也许您应该将 t_p 存储为 p_t?这样你就会得到这个:
{
p_t: "afihad223dadd_145343423423"
},
{
p_t: "afihad223dadd_1453434133323"
},
{
p_t: "kkkkaaass_145223423423"
},
{
p_t: "kkkkaaass_145223423450"
}
.child(child)
.orderByChild('p_t')
.startAt("kkkkaaass_14522342342")
.endAt("kkkkaaass_145223423450")
.limitToLast(15)
您应该尝试以您要访问数据的方式存储数据。
关于javascript - 具有 startAt 和 endAt 的 orderByChild 不适用于组合字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39465962/