170 похожих чатов

Прошу совета. Я не настоящий node.js девелопер, но тут напилил

бэкенд MVP на ноде+express, и он разросся слишком сильно, надо то ли с нуля переписать по-человечески, то ли капитально порефакторить.

Что у меня есть:
- обработчики всех запросов в index.js, 780 строк кода. Некоторые из них даже валидируются (joi). Логики тут никакой нет, только запросы к сервисам работы с БД (storage.js) и отправки писем (sender.js)

- sender.js - 400 строк кода, 7 методов, формирование писем и обращения к внешнему сервису отправки писем через API, а также работа с БД через stroage.js

- storage.js - самый жир. 1500 строк кода, 55 методов, часть из которых используется при обращениях извне, часть - только внутри класса. Использую mysql с обычными коллбеками (с вытекающим монструозным вложенным кодом). Есть простые операции, есть большие SQL запросы на 15-20 строк (большие селекты сложных данных).

Остальное там по мелочи - конфиги, кое-какие классы-утилиты

Основная проблема - полное отсутствие тестов. Мне бы добавить сюда прогон каких-то сценариев, т.е. скорее интеграционное тестирование, чем модульное. Начал сталкиваться с проблемой, что какой-то старый функционал может начать отваливаться при допиле нового.

Вопросы:
- стоит ли использовать какие-то ORM? если да, что как там жить с большими запросами?
- как это лучше тестировать?
- есть где-то примеры кода подобного плана API на node+express нормально организованного хотя бы, а в идеале - с тестами.

2 ответов

6 просмотров

orm - sequelize, unit testing примеры ищите на гитхабе, но все что я находил было не большим, или в начальном состоянии

jest + supertest

Похожие вопросы

Обсуждают сегодня

Всем привет, написал код ниже, но он выдает сегфолт, в чем причина? #include <stdio.h> #include <stdlib.h> #include <string.h> struct product { char *name; float price; };...
buzz базз
75
А как лучше конвертировать физический адрес в виртуальный при маппинге? В случае ядра у меня, например, direct mapping, первые 768МБ я как есть мапплю в higher half, а остальн...
Evg Resh
26
Всем привет, подскажите/посоветуйте пожалуйста. Фаердак компоненты, имею одно место где бизнес хочет видеть при открытии формы список всех клиентов, это порядка 30к. Мои дово...
Sasha Sch
14
Ребят, если кто в курсе - скажите, а в загранке такое же засилье маркетплейсов? или там простые сермяжные интернет-магазины живут попроще?
Андрей [aharito] Харитонов
14
Коллеги, доброе утро. Запустил на удаленном хосте приложение (ручками зашел туда по ssh и запустил, не командой удаленно). Создал потом ssh-туннель, и с моей машины приложение...
Δημήτηρ
9
Господа всем привет. Для того чтобы страница индексировалась с запросом под каждый город. Это нужно делать отдельные страницы для каждого города, или есть варианты по лучше?
Владимир
8
Хотел бы спросить у знающих, правильную ли я выбрал книгу для начала изучения ассемблера Юрова В.И ? Или есть более лучшие книги для начала обучения?
Botsman
31
а я честно сказать не понимаю - нахуя идти учиться на вышку или еще куда-либо и при этом нихуя не делать, типа зачем ? просто корку получить, а нахуй она нужна тогда ?
Eugene Неелов
7
$params = [ 'formid' => 'feedbackForm', 'formTpl' => '@CODE: <form class="form-validate" data-id="ajax_form"> <fieldset class="margin-bottom-md"> ...
Pathologic
1
Здравствуйте. Задача состоит в том, чтобы сделать real-time чат в мобильном приложении. После передачи сообщения пользователем через веб-сокеты, для основного и долговременног...
🐾
5
Карта сайта