Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
284 views
in Technique[技术] by (71.8m points)

Firebase Realtime equalTo not working with String like "+123"

I have an issue and can't find the answer. Here is my sample firebase database, with an index on "mobile" :

test
 A
  mobile : "+1234567"
 B
  mobile : "+2345678"

Now I want to query all node with mobile = "+1234567"

test.json?orderBy="mobile"&equalTo="+1234567"
returns : { }

but

test.json?orderBy="mobile"&startAt="+1234567"
returns :
{
  "A" : {
    "mobile" : "+1234567"
  },
  "B" : {
    "mobile" : "+2345678"
  }
}

and

test.json?orderBy="mobile"&startAt="+1234567"&endAt="+1234567"
returns : { }

What's wrong ? It works fine if I remove all "+" signs (in database + requests) ?!

question from:https://stackoverflow.com/questions/65924783/firebase-realtime-equalto-not-working-with-string-like-123

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

You'll need to URL encode the + character, meaning show it as %2B.

So:

test.json?orderBy="mobile"&startAt="+1234567"&endAt="%2B1234567"

See my working example here: https://stackoverflow.firebaseio.com/65924783.json?orderBy=%22mobile%22&equalTo=%22%2B1234567%22


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...