Могу ли я получить конфиги вне strapi runtime? - PullRequest
0 голосов
/ 29 апреля 2020

Я реализую миграцию knex на своем API и планирую запустить их на фазе выпуска Heroku (до запуска новой версии).

Можно ли как-нибудь получить проанализированные конфигурации Strapi из моих knexfile.js?

Что-то вроде этого было бы замечательно:

const strapi = require('strapi');
strapi.config.database;

Проблема в том, что я не хочу дублировать свои конфиги, и требование config/environments/xxx/database.json не даст мне " разобрал "результаты. Значение "${process.env.DATABASE_HOST}" пока не будет интерполировано.

Ответы [ 2 ]

0 голосов
/ 30 апреля 2020

TLDR;

Вы можете получить конфигурацию Strapi следующим образом:

const strapi = require('strapi')({ serveAdminPanel: false });

strapi.load()
  .then(() => {
    const config = strapi.config.currentEnvironment;
  });

Но вы можете получить экземпляр knex Strapi напрямую следующим образом:

const strapi = require('strapi')({ serveAdminPanel: false });

strapi.load()
  .then(() => {
    const knex = strapi.connections[
      strapi.config.currentEnvironment.database.defaultConnection
    ];

    // do anything with knex here
    // like knex.migrate.latest();
  });

-

Сначала я попытался получить конфигурацию, но когда я сделал это, я продолжал получать ошибку соединения, поэтому мне удалось получить соединение knex напрямую, и все заработало!

0 голосов
/ 30 апреля 2020

Самый простой способ решить эту проблему - использовать process.env, а не strapi.config. Конфигурации Strapi - не более чем производные константы, поэтому написание собственного сценария не потребует дополнительных затрат при запуске Strapi. Я предполагаю, что вы используете переменные среды heroku. Если переменные недоступны на этапе выпуска (например, gcp-build Google App Engine), вам нужно загрузить их самостоятельно, используя что-то вроде dotenv или yenv или что-то, что я построил: kenv (загрузка объекта из базы).

У меня была похожая проблема с использованием функции bootstrap в strapi - где мне нужно было выполнить свои собственные миграции (за пределами страны strapi), поэтому я написал свою собственные сценарии заполнения и переноса knex / bookshelf, которые выполнялись вручную (не через пререлизный хук) перед запуском strapi.

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

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