#node.js #database #express
#node.js #База данных #экспресс
Вопрос:
Недавно я создал Node.js REST API для простого блога с использованием Express.js для обработки HTTP-запросов и MySQL для сохранения (в настоящее время я не использую ORM: на моем уровне доступа к базе данных я вызываю хранимые процедуры напрямую).
Моя схема архитектуры выглядит следующим образом
Но что, если я захочу отказаться от MySQL и начать использовать MongoDB?
Я думаю, что лучшим подходом было бы добавить поддержку в мое приложение для обеих систем баз данных, чтобы, если я захочу переключиться с MySQL на MongoDB или наоборот, у меня были готовы оба уровня доступа к базе данных (исключая часть переноса данных).
Каков наилучший способ добиться этого?В идеале лучшим решением было бы просто изменить свойство конфигурации приложения, чтобы указать, какую базу данных я хочу использовать
Комментарии:
1. Поскольку это разные системы БД (реляционные и нереляционные), это очень сложный подход. Даже серьезные ORM не имеют этой функции, но они способны легко переключаться между реляционными базами данных
Ответ №1:
Это в значительной степени основано на мнении и контексте.
Каждый раз, когда вам нужны NodeJS для связи с базой данных, вы должны использовать модули, которые приспосабливаются к ним, чтобы упростить подключение, запросы и другие действия. Даже если бы вам пришлось самостоятельно писать модуль для абстрагирования баз данных, вы смогли бы справиться только с несколькими конкретными случаями. Не существует единого модуля для обработки их всех.
В больших приложениях, где одновременно может использоваться несколько API, они обычно находятся в разных конечных точках. В принципе, /api/mongo
и /api/mysql
и вы пишете их оба так, как будто вы пишете единый api, и для внесения изменений вы просто изменяете свои интерфейсные запросы.
Для вашего конкретного случая я бы порекомендовал вам взглянуть на feathersjs. У него есть cli, который выполняет то, что я сказал выше, программно и поддерживает множество различных баз данных.