0

次のようなデータベースがあります。

  "trucks" : {
    "3705ec54-8a2e-4eb1-8bb9-ab2243645ac1" : {
      "email" : "sandwiches@123.com",
      "name" : "Sandwich Truck",
      "phone" : "123 - 456 - 1234",
      "provider" : "password",
      "selfDescription" : "We serve delicious sandwiches at a moderate price.  Cards Accepted.",
      "userType" : "truck",
      "website" : "www.sandwiches.com"
    },
    "54fea8cd-2203-46bd-aaf8-9d823e85313d" : {
      "email" : "pizza@123.com",
      "name" : "Supa Pizza",
      "phone" : "619 - 222 - 4444",
      "provider" : "password",
      "selfDescription" : "We serve incredible pizza at an incredibly unfair price.",
      "userType" : "truck",
      "website" : ""
    },
    "6c542367-507c-4d01-af2c-bf93a7efaef4" : {
      "email" : "fries@123.com",
      "name" : "Pete's Fries",
      "phone" : "11111111111111111111",
      "profilePhoto" : "",
      "provider" : "password",
      "selfDescription" : "We make some of the world's most delicious fries.",
      "userType" : "truck",
      "website" : ""
    },
    "7c6c4395-aec1-443c-908d-62db517def5e" : {
      "email" : "chili@123.com",
      "name" : "Mark's Chili",
      "phone" : "1-800-CHIL-LLL",
      "profilePhoto" : "",
      "provider" : "password",
      "selfDescription" : "We serve the most delicious chili, chili your mamma's mamma is scared to try.",
      "userType" : "truck",
      "website" : ""
    }
  }

名前が検索語に一致するトラックが返される検索バーを実装したいと思います。たとえば、文字列「フライドポテト」を含むトラック名の ID は、検索結果 ID の配列にコミットされます。

これが私がこれまでに試したことですが、サイコロはありません。検索バーにフライドポテトと入力して検索ボタンを押すと、「6c542367-507c-4d01-af2c-bf93a7efaef4」と表示されません

let usersRef = Firebase(url: "https://•••••••••.firebaseIO.com/users")

usersRef.queryOrderedByChild("name").queryEqualToValue(searchBar.text).observeEventType(.ChildAdded, withBlock:{
    snapshot in

    print(snapshot.key)
})

私がどれだけ近いかさえわかりませんが、どんな助けでも大歓迎です。ありがとう!

4

1 に答える 1

1

完全に一致する場合にのみ結果を返すqueryEqualToValue ( Query.equalTo() )を使用してクエリを実行しています。

詳細な説明:

検索バーに「fries」と入力すると、完全に一致する「fries」が検索されますが、これはドキュメントでは利用できないため、目的の値「6c542367-507c-4d01-af2c-bf93a7efaef4」は出力されません。

代わりに、検索バーに「Pete's Fries」という値を入力すると、「6c542367-507c-4d01-af2c-bf93a7efaef4」という結果が得られます。

検索に部分的な値を与える場合、SQL の LIKE クエリに似た検索を実装しようとしています。「firebase で LIKE クエリを実行する方法」の詳細については、以下の投稿を参照してください。

firebaseでSQLの「LIKE」操作を実行するには?

于 2016-06-18T04:13:59.067 に答える