2015-02-12 4 views
3

У меня есть два проекта паруса, веб-сайт - интерфейс и административный сервер. Проекты должны быть отдельными, но они совместно используют папку api/models. Каков предпочтительный способ поделиться ими? В настоящий момент мы использовали отдельный репозиторий git, который мы клонируем в api/models (также будет работать подмодуль git). Я спрашиваю себя, является ли это лучшим способом или рекомендуемым способом сделать это?Как поделиться моделями между двумя или несколькими проектами парусов

Разве паруса v0.11 с крюком для парусов https://github.com/node-machine/sails-hook-machines решить это лучше модульным способом?

Благодаря до сих пор

ответ

0

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

Если нет (или у вас есть отличия в моделях или по какой-либо другой причине), god-подмодули - это определенный путь. sails-hook-machines нестабилен на данный момент, дважды подумайте, хотите ли вы его в своем производстве.

+0

Мы пробовали символические ссылки. Он работает только в том случае, если у вас нет каких-либо зависимостей/требует вызовов в ваших моделях. Если у вас есть, например, «require (« lodash »), узел сделает realpath и будет искать lodash зависимости в каталоге моделей. В этом случае вы можете подумать о добавлении зависимостей в каталог моделей с помощью отдельного package.json. Но это не будет работать, потому что в него входят пары - все, которые будут пытаться загрузить каждый js-файл из каталога node_modules. –

+0

@ThomasFritz Это проблема, о которой я не думал при публикации моего ответа. Если ваши зависимости - обычные вещи (например, async или lodash), вы можете поместить их в конфигурацию «globals» и позволить парусам требовать их под капотом. В противном случае, похоже, у меня нет решения вашей проблемы. Сам по себе у меня один экземпляр паруса как для администраторов, так и для пользователей. Моя модель пользователя имеет атрибут accessLevel, и я делегирую поток кода несколькими политиками. Это полезно, потому что я могу использовать общие методы как для разных групп пользователей. Панель администратора также имеет собственный макет базы данных. Может быть, это поможет вам –

2

Прежде всего:

Если оба приложения работают на одном сервере, вы можете симлинку модели папки из одного приложения к другим.

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

Теперь для решения:

В моем sails-auth модуле, я использую генератор стандартных парусов и создавать расширяемые модели окурки в api/models. Например, здесь я создаю модели User и Passport: https://github.com/tjwebb/sails-auth/blob/master/index.js#L5-L6.

Другой пример также здесь: https://github.com/tjwebb/sails-permissions/blob/master/index.js#L5-L8.

Фактические окурков выглядеть следующим образом: https://github.com/tjwebb/sails-permissions/blob/master/api/models/User.js#L1-L5

sails.js, к сожалению, не имеют конвенции для делать это; но вышеупомянутый подход хорошо работал на практике для моих проектов.

Смежные вопросы