Доступ к данным конфигурации обратной связи из промежуточного программного обеспечения

#node.js #loopbackjs

#node.js #loopbackjs

Вопрос:

Допустим, мы находимся в промежуточном программном обеспечении обратной связи, например

 app.use(function(req,res,next){

    // I am not sure what key to use here in the getter...
    const config = app.get('?');

});
 

Я хочу получить доступ к общей конфигурации, которую использует Loopback.

Я пытался:

 const config = app.get('config');
const config = app.get('env');
const config = app.get('datasources');
 

ничто не дает мне того, чего я хочу.

Интересно, что это дает мне:

 console.log(app.get('restApiRoot'));
=> '/api'
 

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

как мы можем получить доступ к конфигурации, загруженной Loopback. Конфигурация, конечно, зависит от переменных среды и т. Д.

Я хочу записать, что datasources.x.js файл был загружен и что config.x.js файл был загружен, и любая другая информация о конфигурации сервера, которую я могу получить.

Возникли большие проблемы с выяснением, как это сделать.

Похоже, это тот же вопрос, который у меня есть: https://github.com/strongloop/loopback/issues/1526

но они указывают мне на пустоту, которая является Google Groups, и я искал там и не мог найти ответ на этот вопрос.

Ответ №1:

Это поведение фактически унаследовано от Express.

Вся конфигурация хранится в app.settings объекте app.get(key) и app.set(key,value) просто действует как средство получения / установки.

Выполнение console.log(app.settings); ( server/server.js например) этого при новой установке обратной связи возвращает следующее:

 { 'x-powered-by': true,
  etag: 'weak',
  'etag fn': [Function: wetag],
  env: 'development',
  'query parser': 'extended',
  'query parser fn': [Function: parseExtendedQueryString],
  'subdomain offset': 2,
  'trust proxy': false,
  'trust proxy fn': [Function: trustNone],
  view: [Function: View],
  views: 'C:\Users\*******\Documents\GitHub\lbtest\views',
  'jsonp callback name': 'callback',
  host: '0.0.0.0',
  port: 3000,
  restApiRoot: '/api',
  remoting:
   { context: { enableHttpContext: false },
     rest: { normalizeHttpPath: false, xml: false },
     json: { strict: false, limit: '100kb' },
     urlencoded: { extended: true, limit: '100kb' },
     cors: false,
     errorHandler: { disableStackTrace: false } },
  legacyExplorer: false,
  'loopback-component-explorer': { mountPath: '/explorer' },
  url: 'http://localhost:3000/' }
 

Комментарии:

1. да, но эти файлы загружаются в память сервера во время загрузки — я хочу получить к ним доступ, а не перечитывать файлы. Кроме того, Loopback будет выбирать, какие файлы загружать, на основе NODE_ENV и т. Д. — Поэтому для целей отладки я хочу записать данные конфигурации, но пусть Loopback выбирает, какие файлы загружаются, а не я.

2. Хорошо, теперь я лучше понимаю ваш вопрос. Я соответствующим образом обновил свой ответ.

3. app.get(‘settings’) => не определено:(

4. хорошо, поэтому мы просто получаем доступ к app.settings напрямую, а не к app.get (‘settings’) 🙂

5. Да, напрямую, например console.log(app.settings) . app.get(key) вернет значение, соответствующее ключу в app.settings объекте. Решает ли это вашу проблему?