2016-06-09 1 views
0

Я пытаюсь выполнить поиск по ключевым словам с использованием запросов firebase, но они, кажется, никогда не возвращают правильное значение. Его всегда первый ребенок базы данных. база данных организована с использованием child by autoid. мои данные выглядит следующим образомfirebase queryendingatValue ("") всегда возвращает первый дочерний элемент в базе данных

posts : 
-KJj6DMQVcaOIBZ76X03 
     category: 
     "cleaner" 
     dishname: 
     "Lysol" 
     likes 
     8QCQPfShSTdYe1VbCxHK4dkJPFj1: 
     true 
     likesCount: 
      1 
     picURL: 
     "https://firebasestorage.googleapis.com/v0/b/dis..." 
     poster: 
     "8QCQPfShSTdYe1VbCxHK4dkJPFj1" 
     price: 
     "$5" 
     restaurant: 
     "house" 
-KJj6PaHt9EfXQ5-EU-m 

-KJnTUcb3BvZDMI0Pxgo 

-KJnTl4giuy5QMvdeEo5 

функции, которая делает поиск выглядит следующим образом

func searchBarSearchButtonClicked(searchBar: UISearchBar) { 
    filteredPosts.removeAll() 
    let postref = firebase.child("posts") 
    let search = searchController.searchBar.text! 
    print(search) 
    let postQ = (postref.queryOrderedByKey().queryEndingAtValue(search)) 
    // postQ.keepSynced(true) 
    postQ.observeSingleEventOfType(.ChildAdded, withBlock: { (snapshot) in 
    self.filteredPosts.append(snapshot) 
    print(snapshot) 
    self.shouldShowSearchResults = 2 
     self.tableView.reloadData() 
    }) 
    searchController.searchBar.resignFirstResponder() 
} 

Это супер расстраивает. пожалуйста, помогите

+0

Вы запрашиваете dishname или категорию? – Shubhank

+0

, на котором ребенок, вы хотите найти ... категорию, dishname или на что это должно определить в вашей ссылке на firebase. –

+0

Я хочу запросить у каждого из них. Этот код на самом деле вернул правильные результаты сначала, чем остановил @Shubhank –

ответ

1

Вы заказываете ключом, postref.queryOrderedByKey(), а затем запрос на значение этого ключа queryEndingAtValue(search).

Так что, если ваши переменные search являются одним из значений childByAutoId (-KJnTUcb3BvZDMI0Pxgo), я не думаю, что вы вернетесь, что хотите.

Вместо этого распоряжаться имуществом, которое вы ищете. Предположим, вы хотите найти по почте category.

var search = "cleaner" 
let categoryQuery = postref 
    .queryOrderedByChild("category") 
    .queryEndingAtValue(search) 

Это будет тянуть обратно запись -KJj6DMQVcaOIBZ76X03.

+0

Я хочу запросить все поля, хотя –

+0

Вы можете запросить только одно дочернее значение. Вы можете реструктурировать свои данные, чтобы разрешить дополнительные запросы, например posts/cleaner/$ id. –

+0

попробовал ваше решение. не возвращает результатов –

Смежные вопросы