База данных в реальном времени
12 мин
как использовать live query в parse server введение live queries предназначены для использования в приложениях с реактивным обновлением в реальном времени , где использование традиционной парадигмы запросов может вызвать несколько проблем, таких как увеличение времени отклика и высокая загрузка сети и сервера live queries следует использовать в случаях, когда необходимо постоянно обновлять страницу свежими данными из базы данных, что часто происходит в (но не ограничивается) онлайн играх, мессенджерах и совместных списках дел в этом разделе объясняется, как использовать live query от back4app в среде javascript через back4app для этого учебника в качестве примера вы создадите онлайн список дел , как показано ниже смотрите полный todo online list проект на проект live query todo list https //github com/igor ribeiiro/onlinetodolist узнайте больше о parse sdk на справочник api javascript sdk https //parseplatform org/parse sdk js/api/4 3 1/ и документация parse с открытым исходным кодом для javascript sdk https //docs parseplatform org/js/guide/#live queries предварительные требования для завершения этого учебника вам потребуется базовое javascript приложение, подключенное к back4app или к проект live query todo list https //github com/igor ribeiiro/onlinetodolist примечание вы можете использовать приложение, созданное в нашем учебнике по установке javascript parse sdk https //www back4app com/docs/javascript/parse javascript sdk или проект live query todo list https //github com/igor ribeiiro/onlinetodolist достаточные знания запросов javascript parse https //docs parseplatform org/js/guide/#queries (но не обязательно) 1 включить live query перед тем как начать кодирование, необходимо иметь класс в вашей базе данных, чтобы включить live query для этого просто найдите ваше приложение на сайт back4app https //www back4app com/ , и нажмите на \<font color="#2166ae">панель управления\</font> > \<font color="#2166ae">создать класс\</font> , как показано ниже примечание здесь этот класс будет называться \<font color="#2166ae">сообщение\</font> теперь, чтобы включить функцию live query, войдите в свою учетную запись на сайт back4app https //www back4app com/ , найдите ваше приложение и нажмите на \<font color="#2166ae"> настройки приложения\</font> > \<font color="#2166ae"> настройки сервера\</font> найдите блок “url сервера и live query” и нажмите на \<font color="#2166ae">настройки\</font> блок “url сервера и live query” выглядит так затем вы попадете на страницу, подобную приведенной ниже на этой странице вам нужно будет проверить опцию \<font color="#2166ae">активировать ваш поддомен back4app\</font> , опцию \<font color="#2166ae">активировать live query\</font> и все классы, для которых вы хотите активировать live query, как показано ниже необходимо активировать ваш поддомен для использования live queries, потому что он будет работать как живой сервер 2 подпишитесь на ваш запрос чтобы начать использовать livequeries, вам сначала нужно создать \<font color="#2166ae">livequeryclient\</font> , который будет управлять websocket соединениями для вас для этого вам нужно будет предоставить идентификатор приложения, его javascript ключ для целей проверки, а также url сервера, который должен быть доменом, с которым вы настраивали в предыдущем шаге вот код для \<font color="#2166ae">livequeryclient\</font> livequeryclient js 1 var client = new parse livequeryclient({ 2 applicationid 'your app id here', 3 serverurl 'wss\ //' + 'your domain here', // example 'wss\ //livequerytutorial back4app io' 4 javascriptkey 'your javascript key here' 5 }); 6 client open(); после выполнения вышеупомянутых шагов вам следует создать запрос для типа объекта, на который вы хотите подписаться подписка является эмиттером событий, который будет генерировать события, когда происходят изменения в объекте, удовлетворяющем вашему запросу в этом примере вы создадите базовый запрос и подпишетесь на все изменения, внесенные в объект \<font color="#2166ae">todo\</font> смотрите больше о запросах в официальной документации по запросам parse https //docs parseplatform org/js/guide/#queries ниже приведен код для \<font color="#2166ae">querysubscribe\</font> querysubscribe js 1 var query = new parse query('todo'); 2 query ascending('createdat') limit(5); 3 var subscription = client subscribe(query); 3 слушать события с готовой настройкой необходимо закодировать, что ваше приложение будет делать, когда произойдет событие в этой части мы покажем, как слушать эти события на практическом примере пример todo online list будет служить руководством для вашего проекта, потому что используется мало или совсем нет шаблонного кода два основных события, которые вы будете использовать здесь, это событие \<font color="#2166ae">create\</font> и событие \<font color="#2166ae">delete\</font> полный список событий можно найти здесь http //docs parseplatform org/js/guide/#event handling 3 1 событие создания событие \<font color="#2166ae">createevent\</font> срабатывает каждый раз, когда создается \<font color="#2166ae">parseobject\</font> и удовлетворяет условиям запроса, которые вы вставили это событие возвращает созданный объект в примере todo online list массив активностей хранится в переменной \<font color="#2166ae">this todos\</font> и мы добавим новые объекты из нашей базы данных в этот массив, когда произойдет событие создания код для \<font color="#2166ae">createevent\</font> показан ниже createevent js 1 subscription on('create', todo => { 2 this todos add(todo); 3 console log('on create event'); 4 }); 3 2 событие удаления каждый раз, когда существующий \<font color="#2166ae">parseobject\</font> удовлетворяющий вашим условиям запроса удаляется из базы данных, вы получите это событие, которое возвращает удаленный объект в примере todo online list вам нужно удалить объект из списка каждый раз, когда он удаляется из базы данных ищите совпадающие id между сервером и кодом, чтобы идентифицировать удаленные объекты код для \<font color="#2166ae">deleteevent\</font> следующий deleteevent js 1 subscription on('delete', todo => { 2 this todos foreach(t => { 3 if (t id === todo id) { 4 console log('on delete event'); 5 this todos delete(t); 6 } 7 }); 8 }); готово! на данный момент вы знаете, как использовать live queries для создания реактивных приложений в реальном времени вы также знаете, как правильно настроить live query с помощью back4app и можете начать внедрять это в своем приложении