Предисловие
Не так давно была выпущена новая крупная версия Parse Server. Версия 3 включает в себя довольно грубые нарушение изменений Когда дело доходит до облачного кода и JavaScript SDK —
- Версия 2 SDK Parse JavaScript, которая используется в облачном коде, не хватает некоторых методов на ParsePromise Тип, как описано Здесь Анкет К счастью, замена этих методов должна быть довольно простой, поскольку родной Обещания поддерживаются во всех версиях сервера Parse на Sashido Анкет На самом деле, это должно быть одним из первых изменений, которые можно выполнить, прежде чем обновить версию сервера Parse.
- Обработчики облачного кода имеют новый интерфейс на основе обещаний.
- response.success / Ответ.error удаляются в облачном коде
Короче говоря, это означает, что следующий код, который работает на версии 2.x.x, больше не будет работать:
Parse.Cloud.define('fetch_data', (req, res) => { externalService.fetch() .then(data => res.success(data)) .catch(err => res.error(err)); });
И придется заменить следующим кодом:
Parse.Cloud.define('fetch_data', req => externalService.fetch());
Проблемы
Что -то беспокоит вас с вышеизложенным? Позвольте мне повторить, поэтому мы на одной странице … Нарушение изменения означает, что вам придется изменить свой весь Облачный код и переведите его, в то же время вам нужно изменить версию вашего сервера Parse, чтобы соответствовать новому облачному коду и Все это без прерывания способности вашего бэкэнда обслуживать пользователей вашего приложения. Вот почему у Sashido есть что -то особенное в магазине для своих клиентов, продолжайте читать!
Мы, в Sashido, также признаем, что версия (2.3.3) ваших приложений Sashido не совсем актуальна, и потребуется плавный переход. Поскольку никакое программное обеспечение не является идеальным, а несовместимость всегда находится в сфере возможностей при изменении версий, мы хотели бы снизить риски во время перехода как можно больше. Вот почему мы выпускаем в общей сложности 3 версии вместе с 2.3.3 Таким образом, вы можете постепенно обновить свое приложение. Версии:
- 2.8.4
- 3.0.0
- 3.1.3
Путь вперед
Итак, вы хотите обновить свой сервер Parse до последней версии? Большой! Вот что мы рекомендуем вам сделать.
Прежде всего, мы настоятельно рекомендуем протестировать любые производственные приложения на самих себя разработке до обновления. Для этого мы рекомендуем эффективно клонировать ваше существующее приложение, которое состоит из следующих шагов:
- Создайте новое приложение из Sashido Dashboard Анкет
- Экспортируйте базу данных из вашего производственного приложения и импортируйте ее в базу данных вашего недавно созданного приложения. Вот полезное видео о том, как это сделать: Импорт и экспорт базы данных
- Запустите облачный код приложения и скопируйте его из Github Production Application до нового. При желании вы также можете добавить репонирование вашего нового приложения в качестве нового удаленного в местном репо, для более легкой разработки. Больше информации по теме здесь Основы GIT — работа с пультами .
- Толкните изменения в GitHub.
Теперь, когда у вас есть клон вашего приложения, выберите его на приборной панели, перейдите к Время выполнения -> версия сервера Parse и установите свою версию на 2.8.4 Анкет После того, как ваше приложение будет перестроено, убедитесь, что все работает нормально. Проверьте журналы на предмет ошибок, запустите запросы облачного кода, запустите запросы Parse, что бы ни определило ваше приложение как Оперативно Анкет
На этом этапе вы не изменили свой облачный код. Теперь будет правильный момент, чтобы убедиться, что ваш Parse Server работает, как и ожидалось, с версией 2.8.4 Анкет После того, как обширное тестирование будет сделано, и вы уверены, что 2.8.4 Выглядит хорошо, вы также можете переключить свое производственное приложение на него.
Бесстрашные обновления
Хорошо, поэтому мы установили эту версию 3.x Из сервера Parse приносит некоторые нарушающие изменения, мы также упомянули, что Sashido поместил для вас какой -то слой совместимости. Позвольте мне объяснить это очень быстро.
В последней версии сервера Parse обработчики облачных функций не получают второй аргумент при вызове. Второй аргумент держал успех и Ошибка Функции, которые сигнализируют о том, что определенный вызов функции либо преуспел, либо не удался в заданный момент времени, может быть, сразу, может быть, через 5 секунд. Теперь мы должны использовать обещания и Асинхрон/жду Для обработки асинхронных функций, таких как следующий пример, взятый из Разбор Документы :
// The new way Parse.Cloud.define("averageStars", async (request) => { const query = new Parse.Query("Review"); query.equalTo("movie", request.params.movie); const results = await query.find(); let sum = 0; for (let i = 0; i < results.length; ++i) { sum += results[i].get("stars"); } return sum / results.length; });
Это здорово, это действительно так. Асинхрон/жду Делает код JavaScript намного более читабельным и проще рассуждать. Более того, невозможные исключения теперь будут пойманными и возвращены в абонент должным образом, не требуя явного обработки ошибок в 100% случаев. Однако, если у вас есть 1500 строк облачного кода , обновлять все это за один раз, вероятно, не то, чего вы с нетерпением ждете. Вот почему, в Sashido вы можете записан облачный код в обоих стилях — новый (пример выше) и в старом:
// The old way Parse.Cloud.define("averageStars_old", (request, response) => { const query = new Parse.Query("Review"); query.equalTo("movie", request.params.movie); query.find() .then(results => { let sum = 0; for (let i = 0; i < results.length; ++i) { sum += results[i].get("stars"); } response.success(sum / results.length); }) .catch(err => response.error(err)); });
По сути, все приложения в Sashido будут иметь уровень совместимости, впрыскнувший в свой облачный код для версий после 3.x Анкет Что устранит нарушающие изменения, что позволит вам перенести свой облачный код в стабильном и комфортном темпе. В конце концов, вы получаете все новые функции, а взамен это не стоит полного переписывания приложения. Это победа в моей книге!
Последние шаги
Помните, как процедура, которую мы провели, чтобы убедиться, что наше приложение работало над версией 2.8.4 ? Да, я тоже, обновите свою память здесь . При обновлении с 2.8.4 к 3.0.0 и 3.1.3 Вам нужно выполнить те же шаги. Только на этот раз, убедившись, что ваше приложение будет в эксплуатации, вы должны начать переписать ваши функции облачного кода один за другим. Мы настоятельно рекомендуем вам это сделать, поскольку мы не можем гарантировать, что уровень совместимости позволит вам в полной мере воспользоваться всеми функциями сервера Parse в следующих выпусках.
Конец
Вот и все. Теперь вы должны быть полностью готовы к обновлению ваших приложений Sashido!
Приветствую и наслаждайтесь!:)
Оригинал: «https://dev.to/sashido/fearlessly-upgrading-your-sashido-app-from-parse-server-v2-to-v3-hpf»