Как использовать Firebase для базового автоматического завершения/предварительного просмотра текста?
Например, представьте себе блог, поддерживаемый Firebase, где блоггер может помечать сообщения тегами. Поскольку блоггер помещает новый пост, было бы полезно, если бы они могли видеть все существующие в настоящее время теги, которые соответствовали первым нажатиям клавиш, которые они ввели. Поэтому, если "блог", "черный", "пылающие седла" и "бульдоги" были тегами, если пользователь набирает "bl", они получают первые три, но не "бульдоги".
Моя первоначальная мысль заключалась в том, что мы можем установить тег с приоритетом тега и использовать startAt, чтобы наш запрос выглядел примерно так:
fb.child('tags').startAt('bl').limitToFirst(5).once('value', function(snap) {
console.log(snap.val())
});
Но это также вернет "бульдог" как один из результатов (а не конец света, но не самый лучший). Использование startAt ('bl'). EndAt ('bl') не возвращает результатов. Есть ли другой способ сделать это?
(Я знаю, что один из вариантов заключается в том, что мы можем использовать сервер поиска, например ElasticSearch, для - см. https://www.firebase.com/blog/2014-01-02-queries-part-two.html - но я хотел бы сохранить как можно больше в Firebase.)
Edit
Как предложил Като, вот конкретный пример. У нас есть 20 000 пользователей, их имена хранятся как таковые:
/users/$userId/name
Часто пользователи будут искать другого пользователя по имени. Когда пользователь ищет своего собеседника, мы хотели бы, чтобы выпадающий список заполнил список пользователей, имена которых начинаются с букв, которые вводил поисковик. Поэтому, если бы я набрал "Ja", я бы ожидал увидеть "Джейка Хеллера", "Джейк Гилленхаал", "Джек Донахи" и т.д. В раскрывающемся списке.