#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
объекте. Решает ли это вашу проблему?