Есть ли лучшая практика для создания Node-модуля, который использует внутреннюю базу данных? - PullRequest
0 голосов
/ 08 февраля 2012

Я недавно начал работать над небольшим проектом, в котором используются некоторые специально созданные модули, которые я хотел бы в конечном итоге открыть с открытым исходным кодом.Я прочитал некоторые статьи, в которых рассматриваются современные рекомендации по обработке зависимостей от других модулей сообщества, но я боролся с лучшим способом интеграции базы данных или 2 в мой модуль.

Сейчас я использую комбинацию Redis для рабочей очереди и MongoDB для постоянного хранения.Логика отделена от фактического модуля и зависит от приложения.Я действительно хотел бы сложить некоторую логику базы данных / рабочей очереди в модуль, чтобы сделать модуль более полезным и надежным, но я не уверен, что это лучший способ сделать это, при этом предоставляя потенциальному пользователю возможность использовать другие технологии баз данных.,Я понимаю, что у каждого типа базы данных есть недостатки, и я хотел бы предложить пользователю API для изменения моих вариантов по умолчанию.

Меня также беспокоит небольшой барьер входа, создаваемый при установке модуля npm, который опирается на 2 отдельные системы баз данных, и мне было бы интересно услышать, что кто-то скажет по этому вопросу.

1 Ответ

2 голосов
/ 08 февраля 2012

В случае, когда я написал модуль, в котором я ожидаю, что кто-то сможет переопределить части внутренних компонентов, я обычно обрабатываю это через параметры в конструкторе.

В модуле:

function A(opts) { }
module.exports = A;

При использовании кода:

var opts = {
   ...
};
var A = require('./a')(opts);

Где вы бы заменили объект opts тем, что хотели передать в opts. Вы можете сделать это несколькими способами, и у большинства людей есть собственный стиль для такого рода вещей.

Что касается зависимостей и наилучшего подхода, я подозреваю, что вам просто придется принять решение с ним. В конечном счете, если вы не используете только модули внутри npm, вы застрянете, требуя сторонней зависимости. Просто убедитесь, что вы четко указали зависимости, и обрисуйте, как их изменить, если кто-то так решит.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...