Рубрики
Без рубрики

Как написать красивые apis adoode.js с помощью асинхронизации / ange и базы данных Firebase

Paul Breslin Как написать красивые APIs apis ande.js, используя async / ane anebaze и учебное пособие в базе Firebase, и уравновешивает типичные случаи использования, которые вы столкнулись с приподписавшимися при записи конечных точек API для чтения и записи в экземпляр базы данных FireBase. Там будет фокус на красивых асинхронных

Автор оригинала: FreeCodeCamp Community Member.

Пол Бреслин

Этот учебник будет охватывать типичные случаи использования, которые вы столкнетесь, когда пишете конечные точки reзов для чтения и записи в экземпляр базы данных FireBase.

Там будет фокус на Красивая асинхронный код, который использует Async/await Особенность в Node.js (доступна в V7.6 и выше).

(Не стесняйтесь, сладко улыбаться, когда вы волнуетесь до свидания, чтобы обратный ада?)

Предпосылки

Я предполагаю, что у вас уже есть приложение Node.js, настроенное с помощью Admin FireBase Admin SDK. Если нет, то проверьте Официальное руководство по установке Отказ

Запись данных

Во-первых, давайте создадим пример Пост Конечная точка, которая сохранит слова к нашему экземпляру базы данных FireBase:

Это очень базовая конечная точка, которая занимает UserID и а слово Значение, то сохраняет данное слово к слова коллекция. Достаточно просто.

Но что-то не так. Мы пропустим обработку ошибок! В приведенном выше примере мы возвращаем 201 Код состояния (означающий, что ресурс был создан), даже если слово не было должным образом сохранено в нашем экземпляре базы данных FireBase.

Итак, давайте добавим некоторую обработку ошибок:

Теперь, когда конечная точка возвращает точные коды состояния, клиент может отображать соответствующее сообщение для пользователя. Например, «Слово спасено успешно». Или «Невозможно сохранить слово, нажмите здесь, чтобы попробовать еще раз».

Чтение данных

Хорошо, теперь, когда мы написали некоторые данные в нашу базу данных FireBase, давайте попробуем читать от него.

Во-первых, посмотрим, что Получить Конечная точка похожа на использование оригинального метода на основе обещания:

Опять же, достаточно просто. Теперь давайте сравним это с Async/await Версия того же кода:

Обратите внимание на async Ключевое слово добавлено до параметров функции (REQ, RES) и ждать ключевое слово, которое сейчас предшествует db.ref () утверждение.

db.ref () Метод возвращает обещание, что означает, что мы можем использовать ждать Ключевое слово для «Пауза» выполнение скрипта. (Ключевое слово await можно использовать с любым обещанием).

Финал res.send () Метод будет Только бегите после db.ref () обещание выполняется.

Это все хорошо и хорошо, но настоящая красота Async/await становится очевидным, когда вам нужно цепи несколько асинхронных запросов.

Допустим, вам пришлось запускать ряд асинхронных функций последовательно:

Не красивая. Это также известно как «пирамида DOOM» (и мы еще даже не добавили обработчики ошибок).

Теперь посмотрите на вышеупомянутый фрагмент, переписанный для использования Async/await :

Нет больше пирамиды гибели! Более того, все ждать Заявления могут быть завернуты в один попробуйте/поймать Блок для обработки любых ошибок:

Параллельные запросы Async/await

Как насчет случаев, когда вам нужно получить несколько записей из вашей базы данных FireBase одновременно?

Легкий. Просто используйте Обещание. Все () Метод для запуска запросов баз данных FireBase параллельно:

Еще кое-что

При создании конечной точки для возврата данных, полученных из экземпляра базы данных FireBase, будьте осторожны, чтобы не просто вернуть весь Snapshot.val () Отказ Это может вызвать проблему с JSON Parsing на клиенте.

Например, скажем, у вашего клиента есть следующий код:

Snapshot.val () Возвращенные Firebase могут либо быть объектом JSON, либо null Если запись не существует. Если null возвращается, Ответ.json () На вышеупомянутом фрагменте будет выбросить ошибку, так как она пытается разобрать тип не объекта.

Чтобы защитить себя от этого, вы можете использовать Объект.assign () Чтобы всегда вернуть объект к клиенту:

Спасибо за прочтение!

Заинтересованы в виде реального проекта, построенного на вершине Firebase и Node.js? Проверить Вокзал Строитель словарный запас, который помогает вам помнить слова, которые вы столкнулись.