我想用两个条件查询。我开始知道它不可能直接在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)
我也获得了其他记录。为什么呢?
答案 0 :(得分:1)
这是因为它以词汇形式订购,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)
您应该尝试以您访问它的方式存储数据。