Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
288 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 Answer

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


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...